1. 23.10.24(ํ)
1. 20231024_01_scott.sql
SELECT USER
FROM DUAL;
--==>> SCOTT
--------------------------------------------------------------------------------
--โ RANK() -> ๋ฑ์(์์)๋ฅผ ๋ฐํํ๋ ํจ์
SELECT EMPNO "์ฌ์๋ฒํธ", ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL "๊ธ์ฌ"
, RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์" --** ๊ธ์ฌ ๋ด๋ฆผ์ฐจ์ ๊ธฐ์ค ๋ฑ์ ๋งค๊ธฐ๊ธฐ
FROM EMP;
--==>>
/*
7839 KING 10 5000 1
7902 FORD 20 3000 2
7788 SCOTT 20 3000 2
7566 JONES 20 2975 4
7698 BLAKE 30 2850 5
7782 CLARK 10 2450 6
7499 ALLEN 30 1600 7
7844 TURNER 30 1500 8
7934 MILLER 10 1300 9
7521 WARD 30 1250 10
7654 MARTIN 30 1250 10
7876 ADAMS 20 1100 12
7900 JAMES 30 950 13
7369 SMITH 20 800 14
*/
SELECT EMPNO "์ฌ์๋ฒํธ", ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL "๊ธ์ฌ"
, RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "๋ถ์๋ณ๊ธ์ฌ์์"
, RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์"
FROM EMP;
/*
7839 KING 10 5000 1 1
7902 FORD 20 3000 1 2
7788 SCOTT 20 3000 1 2
7566 JONES 20 2975 3 4
7698 BLAKE 30 2850 1 5
7782 CLARK 10 2450 2 6
7499 ALLEN 30 1600 2 7
7844 TURNER 30 1500 3 8
7934 MILLER 10 1300 3 9
7521 WARD 30 1250 4 10
7654 MARTIN 30 1250 4 10
7876 ADAMS 20 1100 4 12
7900 JAMES 30 950 6 13
7369 SMITH 20 800 5 14
*/
SELECT EMPNO "์ฌ์๋ฒํธ", ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL "๊ธ์ฌ"
, RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "๋ถ์๋ณ๊ธ์ฌ์์"
, RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์"
FROM EMP
ORDER BY DEPTNO;
/*
7839 KING 10 5000 1 1
7782 CLARK 10 2450 2 6
7934 MILLER 10 1300 3 9
7902 FORD 20 3000 1 2 -> 1
7788 SCOTT 20 3000 1 2 -> 1
7566 JONES 20 2975 3 4 -> 3
7876 ADAMS 20 1100 4 12
7369 SMITH 20 800 5 14
7698 BLAKE 30 2850 1 5
7499 ALLEN 30 1600 2 7
7844 TURNER 30 1500 3 8
7654 MARTIN 30 1250 4 10
7521 WARD 30 1250 4 10
7900 JAMES 30 950 6 13
*/
--โ DENSE_RANK() -> ์์ด์ ๋ฐํํ๋ ํจ์
SELECT EMPNO "์ฌ์๋ฒํธ", ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL "๊ธ์ฌ"
, DENSE_RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "๋ถ์๋ณ๊ธ์ฌ์์ด"
, DENSE_RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์ด"
FROM EMP
ORDER BY 3,4 DESC;
/*
7839 KING 10 5000 1 1
7782 CLARK 10 2450 2 5
7934 MILLER 10 1300 3 8
7902 FORD 20 3000 1 2 -> 1
7788 SCOTT 20 3000 1 2 -> 1
7566 JONES 20 2975 2 3 -> 2
7876 ADAMS 20 1100 3 10
7369 SMITH 20 800 4 12
7698 BLAKE 30 2850 1 4
7499 ALLEN 30 1600 2 6
7844 TURNER 30 1500 3 7
7654 MARTIN 30 1250 4 9
7521 WARD 30 1250 4 9
7900 JAMES 30 950 5 11
*/
/* 1-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ EMP ํ
์ด๋ธ์ ์ฌ์ ๋ฐ์ดํฐ๋ฅผ
-- ์ฌ์๋ช
, ๋ถ์๋ฒํธ, ์ฐ๋ด, ๋ถ์๋ด์ฐ๋ด์์, ์ ์ฒด์ฐ๋ด์์ ํญ๋ชฉ์ผ๋ก ์กฐํํ๋ค.
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
, RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL*12+NVL(COMM,0) DESC) "๋ถ์๋ด์ฐ๋ด์์"
, RANK() OVER(ORDER BY SAL*12+NVL(COMM,0) DESC) "์ ์ฒด์ฐ๋ด์์"
FROM EMP;
SELECT T.*
, RANK() OVER(PARTITION BY T."๋ถ์๋ฒํธ" ORDER BY T."์ฐ๋ด" DESC) "๋ถ์๋ด์ฐ๋ด์์"
, RANK() OVER(ORDER BY T."์ฐ๋ด" DESC) "์ ์ฒด์ฐ๋ด์์"
FROM
(
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
FROM EMP
) T;
/*
KING 10 60000 1 1
FORD 20 36000 1 2
SCOTT 20 36000 1 2
JONES 20 35700 3 4
BLAKE 30 34200 1 5
CLARK 10 29400 2 6
ALLEN 30 19500 2 7
TURNER 30 18000 3 8
MARTIN 30 16400 4 9
MILLER 10 15600 3 10
WARD 30 15500 5 11
ADAMS 20 13200 4 12
JAMES 30 11400 6 13
SMITH 20 9600 5 14
*/
/* 2-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ EMP ํ
์ด๋ธ์์ ์ ์ฒด์ฐ๋ด์์๊ฐ 1๋ฑ๋ถํฐ 5๋ฑ๊น์ง๋ง..
-- ์ฌ์๋ช
, ๋ถ์๋ฒํธ, ์ฐ๋ด, ์ ์ฒด์ฐ๋ด์์ ํญ๋ชฉ์ผ๋ก ์กฐํํ๋ค.
SELECT T.*
FROM(
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
, RANK() OVER(ORDER BY SAL*12+NVL(COMM,0) DESC) "์ ์ฒด์ฐ๋ด์์"
FROM EMP
) T
WHERE T."์ ์ฒด์ฐ๋ด์์" BETWEEN 1 AND 5;
/* 2-ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
, RANK() OVER(ORDER BY (SAL+12+NVL(COMM,0)) DESC) "์ ์ฒด์ฐ๋ด์์"
FROM EMP
WHERE ์ ์ฒด์ฐ๋ด์์ 1๋ฑ๋ถํฐ 5๋ฑ๊น์ง;
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
, RANK() OVER(ORDER BY (SAL+12+NVL(COMM,0)) DESC) "์ ์ฒด์ฐ๋ด์์"
FROM EMP
WHERE RANK() OVER(ORDER BY (SAL+12+NVL(COMM,0)) DESC) <= 5;
--==>> ์๋ฌ๋ฐ์(ORA-30483: window functions are not allowed here)
--โป ์์ ๋ด์ฉ์ RANK() OVER() ํจ์๋ฅผ WHERE ์กฐ๊ฑด์ ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ์ด๋ฉฐ...
-- ์ด ํจ์๋ WHERE ์กฐ๊ฑด์ ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค.
-- ์ด ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ INLINE VIEW ๋ฅผ ํ์ฉํด์ ํ์ดํด์ผ ํ๋ค.
SELECT T.*
FROM
(
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
, RANK() OVER(ORDER BY (SAL+12+NVL(COMM,0)) DESC) "์ ์ฒด์ฐ๋ด์์"
FROM EMP
) T
WHERE T."์ ์ฒด์ฐ๋ด์์" <= 5;
--โ EMP ํ
์ด๋ธ์์ ๊ฐ ๋ถ์๋ณ๋ก ์ฐ๋ด ๋ฑ์๊ฐ 1๋ฑ ๋ถํฐ 2๋ฑ ๊น์ง๋ง ์กฐํํ๋ค.
-- ์ฌ์๋ช
, ๋ถ์๋ฒํธ, ์ฐ๋ด, ๋ถ์๋ด์ฐ๋ด๋ฑ์, ์ ์ฒด์ฐ๋ด๋ฑ์ ํญ๋ชฉ์
-- ์กฐํํ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
SELECT T.*
FROM
(
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
, RANK() OVER(PARTITION BY DEPTNO ORDER BY (SAL*12+NVL(COMM,0)) DESC) "๋ถ์๋ด์ฐ๋ด๋ฑ์"
, RANK() OVER(ORDER BY (SAL*12+NVL(COMM,0)) DESC) "์ ์ฒด์ฐ๋ด๋ฑ์"
FROM EMP
) T
WHERE T."๋ถ์๋ด์ฐ๋ด๋ฑ์" <=2 ;
SELECT T2.*
FROM
(
SELECT T1.*
, RANK() OVER(PARTITION BY T1."๋ถ์๋ฒํธ" ORDER BY T1."์ฐ๋ด" DESC) "๋ถ์๋ด์ฐ๋ด๋ฑ์"
, RANK() OVER(ORDER BY T1."์ฐ๋ด" DESC) "์ ์ฒด์ฐ๋ด๋ฑ์"
FROM
(
SELECT ENAME "์ฌ์๋ช
", DEPTNO "๋ถ์๋ฒํธ", SAL*12+NVL(COMM,0) "์ฐ๋ด"
FROM EMP
) T1
) T2
WHERE T2."๋ถ์๋ด์ฐ๋ด๋ฑ์" <=2 ;
/*
KING 10 60000 1 1
CLARK 10 29400 2 6
FORD 20 36000 1 2
SCOTT 20 36000 1 2
BLAKE 30 34200 1 5
ALLEN 30 19500 2 7
*/
--โป ์ ์
-- LN() ์์ฐ ๋ก๊ทธ ์กด์ฌํจ~!!!
SELECT LN(95) "COL1"
FROM DUAL;
--==>> 4.55387689160054083460978676511404117675
--โป ์ถ๊ฐ
--โ TRIM()
SELECT TRIM(' TEST ') "COL1"
, LTRIM(' TEST ') "COL2"
, RTRIM(' TEST ') "COL3"
FROM DUAL;
--==>> TEST TEST TEST
--โ โ โ ๊ทธ๋ฃน ํจ์ โ โ โ --
-- SUM() ํฉ, AVG() ํ๊ท , COUNT() ์นด์ดํธ, MAX() ์ต๋๊ฐ, MIN() ์ต์๊ฐ
-- ,VARIENCE() ๋ถ์ฐ, STDDEV() ํ์คํธ์ฐจ
--โป ๊ทธ๋ฃนํจ์์ ๊ฐ์ฅ ํฐ ํน์ง
-- ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ๋ค ์ค NULL์ด ์กด์ฌํ๋ค๋ฉด(ํฌํจ๋์ด ์๋ค๋ฉด)
-- ์ด NULL์ ์ ์ธํ ์ํ๋ก ์ฐ์ฐ์ ์ํํ๋ค๋ ๊ฒ์ด๋ค.
-- ์ฆ, NULL์ ์ฐ์ฐ์ ๋์์์ ์ ์ธ๋๋ค.
--โ SUM() ํฉ
-- EMP ํ
์ด๋ธ์ ๋์์ผ๋ก ์ ์ฒด ์ฌ์๋ค์ ๊ธ์ฌ ์ด ํฉ์ ์กฐํํ๋ค.
SELECT SAL
FROM EMP;
/*
800
1600
1250
2975
1250
2850
2450
3000
5000
1500
1100
950
3000
1300
*/
SELECT SUM(SAL) -- 800 + 1600 + ... + 1300
FROM EMP;
--==>> 29025
SELECT COMM
FROM EMP;
/*
(null)
300
500
(null)
1400
(null)
(null)
(null)
(null)
0
(null)
(null)
(null)
(null)
*/
SELECT SUM(COMM) -- NULL + 300 + 500 + NULL + ... + NULL --(X)
FROM EMP;
--==>> 2200
--โ COUNT() ํ(๋ ์ฝ๋)์ ๊ฐฏ์ ์กฐํ -> ๋ฐ์ดํฐ๊ฐ ๋ช ๊ฑด์ธ์ง... ํ์ธ...
SELECT COUNT(ENAME)
FROM EMP;
--==>> 14
SELECT COUNT(COMM)
FROM EMP;
--==>> 4
SELECT COUNT(*)
FROM EMP;
--==>> 14
-- COUNT๋ฅผ ์ํํ ๋๋ NULL ์ด ์กฐํ์์ ๋น ์ง ์ ์์ผ๋ฏ๋ก (*)์ผ๋ก ์กฐํ
--โ AVG() ํ๊ท ๋ฐํ
SELECT AVG(SAL) "COL1"
, SUM(SAL) / COUNT(SAL) "COL2"
, 29025 / 14 "COL3"
FROM EMP;
--==>> 2073.214285714285714285714285714285714286 2073.214285714285714285714285714285714286
SELECT AVG(COMM) "COL1"
, SUM(COMM) / COUNT(COMM) "COL2"
, 2200 / 4 "COL3" -- NULL์ ์ ์ธํ๊ณ ์ฐ์ฐ
, 2200 / 14 "COL4" -- ์ ๋ต
FROM EMP;
--โป ๋ฐ์ดํฐ๊ฐ NULL์ธ ์ปฌ๋ผ์ ๋ ์ฝ๋๋ ์ฐ์ฐ ๋์์์ ์ ์ธ๋๊ธฐ ๋๋ฌธ์
-- ์ฃผ์ํ์ฌ ์ฐ์ฐ ์ฒ๋ฆฌํด์ผ ํ๋ค.
SELECT SUM(COMM) / COUNT(*) "COL1"
FROM EMP;
--==>> 157.142857142857142857142857142857142857
-- VARIANCE() / STDDEV()
-- โป ํ์คํธ์ฐจ์ ์ ๊ณฑ์ด ๋ถ์ฐ, ๋ถ์ฐ์ ์ ๊ณฑ๊ทผ์ด ํ์คํธ์ฐจ
SELECT VARIANCE(SAL), STDDEV(SAL)
FROM EMP;
--==>> 1398313.87362637362637362637362637362637 1182.503223516271699458653359613061928508
SELECT POWER(STDDEV(SAL),2) "COL1"
, VARIANCE(SAL) "COL2"
FROM EMP;
--==>>
/*
1398313.87362637362637362637362637362637
1398313.87362637362637362637362637362637
*/
SELECT SQRT(VARIANCE(SAL)) "COL1"
FROM EMP;
--==>> 1182.503223516271699458653359613061928508
-- MAX() / MIN()
-- ์ต๋๊ฐ / ์ต์๊ฐ ๋ฐํ
SELECT MAX(SAL) "COL1"
, MIN(SAL) "COL2"
FROM EMP;
--==>>800
--โป ์ฃผ์
SELECT ENAME, SUM(SAL)
FROM EMP;
--==>> ์๋ฌ๋ฐ์(ORA-00937: not a single-group group function)
SELECT ENAME
FROM EMP;
SELECT SUM(SAL)
FROM EMP;
--==>> 29025
SELECT DEPTNO, SUM(SAL) --** DEPTNO : 14๊ฑด, SUM(SAL)์ ๋จ์ผ๊ฑด
FROM EMP;
--==>> ์๋ฌ ๋ฐ์(ORA-00937: not a single-group group function)
SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO
ORDER BY 1;
/*
10 8750
20 10875
30 9400
*/
SELECT DEPTNO, SAL
FROM EMP
ORDER BY 1;
--==>>
/*
10 2450 โ
10 5000 โ10
10 1300 โ
20 2975 โ
20 3000 โ
20 1100 โ20
20 800 โ
20 3000 โ
30 1250 โ
30 1500 โ
30 1600 โ30
30 950 โ
30 2850 โ
30 1250 โ
*/
--โ ๊ธฐ์กด ํ
์ด๋ธ ์ ๊ฑฐ
DROP TABLE TBL_EMP;
--==>> Table TBL_EMP์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
--โ ์ค์ต ํ
์ด๋ธ ์์ฑ(๋ณต์ฌ)
CREATE TABLE TBL_EMP
AS
SELECT *
FROM EMP;
--==>> Table TBL_EMP์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
--โ ์ค์ต ๋ฐ์ดํฐ ์ถ๊ฐ ์
๋ ฅ
INSERT INTO TBL_EMP VALUES
(8001, '์ด์ค์', 'CLERK', 7566, SYSDATE, 1500, 10, NULL);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_EMP VALUES
(8002, '์ํ์ฑ', 'CLERK', 7566, SYSDATE, 2000, 10, NULL);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_EMP VALUES
(8003, '๊น๋ฏผ์ง', 'SALESMAN', 7698, SYSDATE, 1700, NULL, NULL);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_EMP VALUES
(8006, '์ ํ์ฑ', 'SALESMAN', 7698, SYSDATE, 2500, NULL, NULL);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_EMP VALUES
(8007, '๋ฐ๋์', 'SALESMAN', 7698, SYSDATE, 1000, NULL, NULL);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
--โ ํ์ธ
SELECT *
FROM TBL_EMP;
/*
7369 SMITH CLERK 7902 1980-12-17 800 (null) 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 2850 (null) 30
7782 CLARK MANAGER 7839 1981-06-09 2450 (null) 10
7788 SCOTT ANALYST 7566 1987-07-13 3000 (null) 20
7839 KING PRESIDENT 1981-11-17 5000 (null) 10
7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30
7876 ADAMS CLERK 7788 1987-07-13 1100 (null) 20
7900 JAMES CLERK 7698 1981-12-03 950 (null) 30
7902 FORD ANALYST 7566 1981-12-03 3000 (null) 20
7934 MILLER CLERK 7782 1982-01-23 1300 (null) 10
8001 ์ด์ค์ CLERK 7566 2023-10-24 1500 10 (null)
8002 ์ํ์ฑ CLERK 7566 2023-10-24 2000 10 (null)
8003 ๊น๋ฏผ์ง SALESMAN 7698 2023-10-24 1700 (null) (null)
8006 ์ ํ์ฑ SALESMAN 7698 2023-10-24 2500 (null) (null)
8007 ๋ฐ๋์ SALESMAN 7698 2023-10-24 1000 (null) (null)
*/
--โ ์ปค๋ฐ
COMMIT;
SELECT DEPTNO, SAL, COMM
FROM TBL_EMP
ORDER BY COMM DESC;
/*
20 800
1700
1000
10 1300
20 2975
30 2850
10 2450
20 3000
10 5000
2500
20 1100
30 950
20 3000
30 1250 1400
30 1250 500
30 1600 300
1500 10
2000 10
30 1500 0
*/
-- ์ค๋ผํด์์๋ NULL์ ๊ฐ์ฅ ํฐ ๊ฐ์ผ๋ก ๊ฐ์ฃผํ๋ค.
-- (ORACLE 9I ๊น์ง๋ NULL์ ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ๊ฐ์ฃผํ์๋ค.)
-- (MSSQL ์ NULL์ ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ๊ฐ์ฃผํ๋ค.)
--โ TBL_EMP ํ
์ด๋ธ์ ๋์์ผ๋ก ๋ถ์๋ณ ๊ธ์ฌํฉ ์กฐํ
-- ๋ถ์๋ฒํธ, ๊ธ์ฌํฉ ํญ๋ชฉ ์กฐํ
SELECT DEPTNO "๋ถ์๋ฒํธ", SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY DEPTNO
ORDER BY DEPTNO;
/*
10 8750
20 10875
30 9400
(null) 8700 -- ๋ถ์๋ฒํธ๊ฐ NULL ์ธ ์ฌ์๋ค์ ๊ธ์ฌํฉ
*/
SELECT DEPTNO "๋ถ์๋ฒํธ", SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
/*
10 8750
20 10875
30 9400
8700 -- ๋ถ์๋ฒํธ๊ฐ NULL ์ธ ์ฌ์๋ค์ ๊ธ์ฌํฉ
37725 -- ๋ชจ๋ ๋ถ์ ์ง์๋ค์ ๊ธ์ฌํฉ
*/
/*
10 8750
20 10875
30 9400
์ธํด 8700
*/
/*
10 8750
20 10875
30 9400
์ธํด 8700
*/
/*
10 8750
20 10875
30 9400
์ธํด 8700
๋ชจ๋ ๋ถ์ 37725
*/
SELECT DEPTNO "๋ถ์๋ฒํธ", SUM(SAL) "๊ธ์ฌํฉ"
FROM EMP
GROUP BY ROLLUP(DEPTNO);
/*
10 8750
20 10875
30 9400
29025
*/
/* 3- ๋ฌธ์ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/*
10 8750
20 10875
30 9400
๋ชจ๋ ๋ถ์ 29025
*/
-- EMP ํ
์ด๋ธ์ ๋์์ผ๋ก ์์ ๊ฐ์ด ์กฐํ๋๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
/* 3- ๋ด๊ฐ ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT CASE WHEN DEPTNO IS NULL THEN '๋ชจ๋ ๋ถ์'
ELSE TO_CHAR(DEPTNO)
END
, SUM(SAL) "๊ธ์ฌํฉ"
FROM EMP
GROUP BY ROLLUP(DEPTNO);
SELECT NVL(TO_CHAR(DEPTNO),'๋ชจ๋ ๋ถ์') "๋ถ์๋ฒํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM EMP
GROUP BY ROLLUP(DEPTNO);
/* 3-ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
SELECT NVL2(DEPTNO, TO_CHAR(DEPTNO),'๋ชจ๋ ๋ถ์') "๋ถ์๋ฒํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM EMP
GROUP BY ROLLUP(DEPTNO);
SELECT NVL2(DEPTNO, TO_CHAR(DEPTNO),'๋ชจ๋ ๋ถ์') "๋ถ์๋ฒํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
--==>>
/*
10 8750
20 10875
30 9400
๋ชจ๋ ๋ถ์ 8700
๋ชจ๋ ๋ถ์ 37725
*/
-- GROUPING()
SELECT GROUPING(DEPTNO), DEPTNO "๋ถ์๋ฒํธ", SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
/*
GROUPING(DEPTNO) ๋ถ์๋ฒํธ ๊ธ์ฌํฉ
0 10 8750
0 20 10875
0 30 9400
0 (null) 8700
1 (null) 37725
*/
/*
๋ถ์๋ฒํธ ๊ธ์ฌํฉ
10 8750
20 10875
30 9400
(null) 8700
(null) 37725
*/
/* 4- ๋ฌธ์ & ํจ๊ป ํผ ํ์ด ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/*
๋ถ์๋ฒํธ ๊ธ์ฌํฉ
10 8750
20 10875
30 9400
์ธํด 8700
๋ชจ๋ ๋ถ์ 37725
*/
-- ์ด์ ๊ฐ์ด ์กฐํ๋๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
SELECT CASE WHEN GROUPING(DEPTNO) = 0 AND DEPTNO IS NOT NULL THEN TO_CHAR(DEPTNO)
WHEN GROUPING(DEPTNO) = 0 AND DEPTNO IS NULL THEN '์ธํด'
WHEN GROUPING(DEPTNO) = 1 THEN '๋ชจ๋ ๋ถ์'
ELSE '-1'
END "๋ถ์๋ฒํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
SELECT NVL(TO_CHAR(DEPTNO), CASE GROUPING(DEPTNO) WHEN 0 THEN '๋จ์ผ๋ถ์' ELSE '๋ชจ๋ ๋ถ์' END) "๋ถ์๊ธฐํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
--โปํํธ
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN '๋จ์ผ๋ถ์' ELSE '๋ชจ๋ ๋ถ์' END "๋ถ์๊ธฐํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
/*
๋จ์ผ๋ถ์ 8750
๋จ์ผ๋ถ์ 10875
๋จ์ผ๋ถ์ 9400
๋จ์ผ๋ถ์ 8700
๋ชจ๋ ๋ถ์ 37725
*/
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN DEPTNO ELSE '๋ชจ๋ ๋ถ์' END "๋ถ์๊ธฐํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
--==>> ์๋ฌ ๋ฐ์(ORA-00932: inconsistent datatypes: expected NUMBER got CHAR)
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN TO_CHAR(DEPTNO) ELSE '๋ชจ๋ ๋ถ์' END "๋ถ์๊ธฐํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
/*
10 8750
20 10875
30 9400
8700
๋ชจ๋ ๋ถ์ 37725
*/
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN NVL(TO_CHAR(DEPTNO),'์ธํด') ELSE '๋ชจ๋ ๋ถ์' END "๋ถ์๊ธฐํธ"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO);
/*
10 8750
20 10875
30 9400
์ธํด 8700
๋ชจ๋ ๋ถ์ 37725
*/
/* 5- ๋ฌธ์ & ํจ๊ป ํผ ํ์ด ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ TBL_SAWON ํ
์ด๋ธ์ ๋์์ผ๋ก
-- ๋ค์๊ณผ ๊ฐ์ด ์กฐํ๋ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
/*
์ฑ๋ณ ๊ธ์ฌํฉ
------- ---------
๋จ XXXX
์ฌ XXXXX
๋ชจ๋ ์ฌ์ XXXXXX
*/
SELECT NVL(T.์ฑ๋ณ,'๋ชจ๋ ์ฌ์') "์ฑ๋ณ", SUM(T.๊ธ์ฌ) "๊ธ์ฌํฉ"
FROM
(
SELECT CASE WHEN SUBSTR(JUBUN,7,1) IN ('1','3') THEN '๋จ'
WHEN SUBSTR(JUBUN,7,1) IN ('2','4') THEN '์ฌ'
ELSE '์ 3์ ์ฑ'
END "์ฑ๋ณ"
, SAL "๊ธ์ฌ"
FROM TBL_SAWON
) T
GROUP BY ROLLUP(T.์ฑ๋ณ);
SELECT CASE GROUPING(T.์ฑ๋ณ) WHEN 0 THEN T.์ฑ๋ณ
ELSE '๋ชจ๋ ์ฌ์'
END "์ฑ๋ณ"
, SUM(T.๊ธ์ฌ) "๊ธ์ฌํฉ"
FROM
(
SELECT CASE WHEN SUBSTR(JUBUN,7,1) IN ('1','3') THEN '๋จ'
WHEN SUBSTR(JUBUN,7,1) IN ('2','4') THEN '์ฌ'
ELSE '์ 3์ ์ฑ'
END "์ฑ๋ณ"
, SAL "๊ธ์ฌ"
FROM TBL_SAWON
) T
GROUP BY ROLLUP(T.์ฑ๋ณ);
--โ TBL_SAWON ํ
์ด๋ธ์ ๋์์ผ๋ก
-- ๋ค์๊ณผ ๊ฐ์ด ์กฐํ๋ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
/*
์ฐ๋ น๋ ์ธ์์
10 X
20 X
50 X
์ ์ฒด X
*/
์ค๋ ๋
๋ - ์๋
์์ผ = ํ์ฌ๋์ด
SELECT NVL(TO_CHAR(T.์ฐ๋ น),'์ ์ฒด') "์ฐ๋ น๋" , COUNT(T.์ฐ๋ น) "์ธ์์"
FROM(
SELECT TRUNC(EXTRACT(YEAR FROM SYSDATE) - DECODE(SUBSTR(JUBUN,7,1),'3',2000,'4',2000,'1',1900,'2',1900,0) - SUBSTR(JUBUN,1,2) +1,-1) "์ฐ๋ น"
FROM TBL_SAWON
) T
GROUP BY ROLLUP(T.์ฐ๋ น);
-- ๋ฐฉ๋ฒ1. -> INLINE VIEW ๋ฅผ ๋ ๋ฒ ์ค์ฒฉ
SELECT NVL(TO_CHAR(T2.์ฐ๋ น๋),'์ ์ฒด') "์ฐ๋ น๋" , COUNT(T2.์ฐ๋ น๋) "์ธ์์"
FROM
(
-- ์ฐ๋ น๋
SELECT CASE WHEN T1.๋์ด >= 50 THEN 50
WHEN T1.๋์ด >= 40 THEN 40
WHEN T1.๋์ด >= 30 THEN 30
WHEN T1.๋์ด >= 20 THEN 20
WHEN T1.๋์ด >= 10 THEN 10
ELSE 0
END "์ฐ๋ น๋"
FROM
(
-- ๋์ด
SELECT CASE WHEN SUBSTR(JUBUN, 7,1) IN ('1','2')
THEN EXTRACT(YEAR FROM SYSDATE) - (TO_NUMBER(SUBSTR(JUBUN,1,2)) + 1899)
WHEN SUBSTR(JUBUN, 7,1) IN ('3','4')
THEN EXTRACT(YEAR FROM SYSDATE) - (TO_NUMBER(SUBSTR(JUBUN,1,2)) + 1999)
ELSE -1
END "๋์ด"
FROM TBL_SAWON
) T1
) T2
GROUP BY ROLLUP(T2.์ฐ๋ น๋);
-- ๋ฐฉ๋ฒ2. -> INLINE VIEW ๋ฅผ ํ ๋ฒ๋ง ์ฌ์ฉ
SELECT CASE GROUPING(T.์ฐ๋ น๋) WHEN 0 THEN TO_CHAR(T.์ฐ๋ น๋)
ELSE '์ ์ฒด'
END "์ฐ๋ น๋2"
,COUNT(*) "์ธ์์"
FROM
(
SELECT TRUNC(CASE WHEN SUBSTR(JUBUN,7,1) IN ('1','2')
THEN EXTRACT(YEAR FROM SYSDATE) - (TO_NUMBER(SUBSTR(JUBUN,1,2)) + 1899)
WHEN SUBSTR(JUBUN,7,1) IN ('3','4')
THEN EXTRACT(YEAR FROM SYSDATE) - (TO_NUMBER(SUBSTR(JUBUN,1,2)) + 1999)
ELSE -1
END,-1) "์ฐ๋ น๋"
FROM TBL_SAWON
) T
GROUP BY ROLLUP(T.์ฐ๋ น๋);
SELECT TRUNC(27, -1) "COL1"
FROM DUAL;
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY 1,2;
/*
DEPTNO JOB SUM(SAL)
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
*/
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY ROLLUP(DEPTNO, JOB)
ORDER BY 1,2;
/*
DEPTNO JOB SUM(SAL)
10 CLERK 1300 - 10๋ฒ ๋ถ์ CLERK ์ง์ข
์ ๊ธ์ฌ ํฉ
10 MANAGER 2450 - 10๋ฒ ๋ถ์ MANGER ์ง์ข
์ ๊ธ์ฌ ํฉ
10 PRESIDENT 5000
10 (null) 8750 - 10๋ฒ ์ฃผ์ ๋ชจ๋ ์ง์ข
์ ๊ธ์ฌ ํฉ
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
20 (null) 10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 (null) 9400
(null) (null) 29025 - ๋ชจ๋ ์ง์ข
๋ชจ๋ ๋ถ์์ ๊ธ์ฌ ํฉ
*/
--โ CUBE() -> ROLLUP() ๋ณด๋ค ๋ ์์ธํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ๋๋ค.
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY CUBE(DEPTNO, JOB)
ORDER BY 1,2;
/*
DEPTNO JOB SUM(SAL)
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 (null) 8750
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
20 (null) 10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 (null) 9400
(null) ANALYST 6000 - ๋ชจ๋ ๋ถ์ ANALYST ์ง์ข
์ ๊ธ์ฌํฉ -- ์ถ๊ฐ
(null) CLERK 4150 - ๋ชจ๋ ๋ถ์ CLECK ์ง์ข
์ ๊ธ์ฌํฉ
(null) MANAGER 8275 - ๋ชจ๋ ๋ถ์ MANAGER ์ง์ข
์ ๊ธ์ฌํฉ
(null) PRESIDENT 5000 - ๋ชจ๋ ๋ถ์ PRESIDNT ์ง์ข
์ ๊ธ์ฌํฉ
(null) SALESMAN 5600
(null) (null) 29025
*/
-- โป ROLLUP()๊ณผ CUBE() ๋ ๊ทธ๋ฃน์ ๋ฌถ์ด์ฃผ๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.(์ฐจ์ด)
--EX.
--ROLLUP(A,B,C)
-- -> (A,B,C) / (A,B) / (A) / ()
--CUBE(A,B,C)
-- -> (A,B,C) / (A,B) / (A,C) / (B,C) / (A)/ (B)/ (C) {}
--> ์์ ๊ณผ์ (ROLLUP())์ ๋ฌถ์ ๋ฐฉ์์ด ๋ค์ ๋ชจ์๋ ๋๊ฐ ์๊ณ
-- ์๋์ ๊ณผ์ (CUBE())์ ๋ฌถ์ ๋ฐฉ์์ด ๋ค์ง๋์น ๋๊ฐ ์๊ธฐ ๋๋ฌธใ
-- ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ค.
-- ๋ค์ ์์ฑํ๋ ํ๋ฆฌ๋ ์กฐํํ๊ณ ์ํ๋ ๊ทธ๋ฃน๋ง
-- <GROUPING SETS>๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ์ ์ผ๋ก ๋ฌถ์ด์ค
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN NVL(TO_CHAR(DEPTNO), '์ธํด')
ELSE '์ ์ฒด๋ถ์'
END "๋ถ์๋ฒํธ"
, CASE GROUPING(JOB) WHEN 0 THEN JOB
ELSE '์ ์ฒด์ง์ข
'
END "์ง์ข
"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY ROLLUP(DEPTNO, JOB)
ORDER BY 1,2;
/*
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 ์ ์ฒด์ง์ข
8750
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
20 ์ ์ฒด์ง์ข
10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 ์ ์ฒด์ง์ข
9400
์ธํด CLERK 3500
์ธํด SALESMAN 5200
์ธํด ์ ์ฒด์ง์ข
8700
์ ์ฒด๋ถ์ ์ ์ฒด์ง์ข
37725
*/
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN NVL(TO_CHAR(DEPTNO), '์ธํด')
ELSE '์ ์ฒด๋ถ์'
END "๋ถ์๋ฒํธ"
, CASE GROUPING(JOB) WHEN 0 THEN JOB
ELSE '์ ์ฒด์ง์ข
'
END "์ง์ข
"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY CUBE(DEPTNO, JOB)
ORDER BY 1,2;
/*
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 ์ ์ฒด์ง์ข
8750
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
20 ์ ์ฒด์ง์ข
10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 ์ ์ฒด์ง์ข
9400
์ธํด CLERK 3500
์ธํด SALESMAN 5200
์ธํด ์ ์ฒด์ง์ข
8700
์ ์ฒด๋ถ์ ANALYST 6000
์ ์ฒด๋ถ์ CLERK 7650
์ ์ฒด๋ถ์ MANAGER 8275
์ ์ฒด๋ถ์ PRESIDENT 5000
์ ์ฒด๋ถ์ SALESMAN 10800
์ ์ฒด๋ถ์ ์ ์ฒด์ง์ข
37725
*/
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN NVL(TO_CHAR(DEPTNO), '์ธํด')
ELSE '์ ์ฒด๋ถ์'
END "๋ถ์๋ฒํธ"
, CASE GROUPING(JOB) WHEN 0 THEN JOB
ELSE '์ ์ฒด์ง์ข
'
END "์ง์ข
"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY GROUPING SETS((DEPTNO, JOB), (DEPTNO), (JOB), ())
ORDER BY 1,2;
--==>> CUBE()๋ฅผ ์ฌ์ฉํ ๊ฒฐ๊ณผ์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฐํ
SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN NVL(TO_CHAR(DEPTNO), '์ธํด')
ELSE '์ ์ฒด๋ถ์'
END "๋ถ์๋ฒํธ"
, CASE GROUPING(JOB) WHEN 0 THEN JOB
ELSE '์ ์ฒด์ง์ข
'
END "์ง์ข
"
, SUM(SAL) "๊ธ์ฌํฉ"
FROM TBL_EMP
GROUP BY GROUPING SETS((DEPTNO, JOB), (DEPTNO), ())
ORDER BY 1,2;
--==>> RULLUP() ๋ฅผ ์ฌ์ฉํ ๊ฒฐ๊ณผ์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฐํ
--------------------------------------------------------------------------------
/* 6- ๋ฌธ์ & ํจ๊ป ํผ ํ์ด ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ TBL_EMP ํ
์ด๋ธ์ ๋์์ผ๋ก
-- ์
์ฌ๋
๋๋ณ ์ธ์์๋ฅผ ์กฐํํ๋ค.
SELECT *
FROM TBL_EMP;
SELECT EXTRACT(YEAR FROM HIREDATE) "์
์ฌ๋
๋", COUNT(*) "์ธ์"
FROM TBL_EMP
GROUP BY EXTRACT(YEAR FROM HIREDATE);
/*
1982 1
2023 5
1987 2
1980 1
1981 10
*/
SELECT EXTRACT(YEAR FROM HIREDATE) "์
์ฌ๋
๋"
, COUNT(*) "์ธ์์"
FROM TBL_EMP
GROUP BY EXTRACT(YEAR FROM HIREDATE)
ORDER BY 1;
SELECT TO_CHAR(HIREDATE, 'YYYY') "์
์ฌ๋
๋"
, COUNT(*) "์ธ์์"
FROM TBL_EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY')
ORDER BY 1;
SELECT EXTRACT(YEAR FROM HIREDATE) "์
์ฌ๋
๋"
, COUNT(*) "์ธ์์"
FROM TBL_EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY')
ORDER BY 1;
--==>> ์๋ฌ๋ฐ์: GROUP BY์ SELECT์ ํ์ ๋ง์ถฐ์ผํจ
SELECT TO_CHAR(HIREDATE, 'YYYY') "์
์ฌ๋
๋"
, COUNT(*) "์ธ์์"
FROM TBL_EMP
GROUP BY EXTRACT(YEAR FROM HIREDATE)
ORDER BY 1;
--==>> ์๋ฌ๋ฐ์(ORA-00979: not a GROUP BY expression)
SELECT TO_NUMBER(TO_CHAR(HIREDATE, 'YYYY')) "์
์ฌ๋
๋"
, COUNT(*) "์ธ์์"
FROM TBL_EMP
GROUP BY EXTRACT(YEAR FROM HIREDATE)
ORDER BY 1;
--==>> ์๋ฌ๋ฐ์(ORA-00979: not a GROUP BY expression)
SELECT CASE GROUPING(TO_CHAR(HIREDATE, 'YYYY')) WHEN 0
THEN TO_CHAR(HIREDATE, 'YYYY')
ELSE '์ ์ฒด'
END "์
์ฌ๋
๋"
, COUNT(*) "์ธ์์"
FROM TBL_EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY') --> '์ ์ฒด'๋ฅผ ์ถ๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ , EXTRACT(YEAR FROM HIREDATE) ์ฌ์ฉx
ORDER BY 1;
--** GROUP BY์ ์กฐ๊ฑด์ ๋ฐ์ดํฐ ํ์
ํต์ผ
--** GROUP BY ์์ ๋ฌถ์ด์ค ๋ฐฉ์์ ํต์ผ(EX. EXTRACT์ด๋ฉด, EXTRACT๋ก)
--** ๋จ์ํ ํ์ ๋ง์ถ๋ค๊ณ ํด์ ํด๊ฒฐ๋์ง ์์
2. ํจ์
2.1.
2.2.
| ํจ์ |
์ค๋ช
|
EX |
| RANK() |
๋ฑ์(์์)๋ฅผ ๋ฐํ |
RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์" -- 1,1,3 |
| PARTITION BY |
|
RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "๋ถ์๋ณ๊ธ์ฌ์์" |
| DENSE_RANK() |
์์ด์ ๋ฐํ |
DENSE_RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์ด" -- 1,1,2 |
| ํจ์ |
์ค๋ช
|
EX |
| RANK() |
๋ฑ์(์์)๋ฅผ ๋ฐํ |
RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์" -- 1,1,3 |
| PARTITION BY |
|
RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "๋ถ์๋ณ๊ธ์ฌ์์" |
| DENSE_RANK() |
์์ด์ ๋ฐํ |
DENSE_RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์ด" -- 1,1,2 |
| ํจ์ |
EX |
๊ฒฐ๊ณผ |
๋น๊ณ |
| RANK() |
RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์" |
-- 1,1,3 |
๋ฑ์(์์)๋ฅผ ๋ฐํ |
| PARTITION BY |
RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "๋ถ์๋ณ๊ธ์ฌ์์" |
|
|
| DENSE_RANK() |
DENSE_RANK() OVER(ORDER BY SAL DESC) "์ ์ฒด๊ธ์ฌ์์ด" |
-- 1,1,2 |
์์ด์ ๋ฐํ |
| LN() |
LN(95) |
4.55387689160054083460978676511404117675 |
์์ฐ ๋ก๊ทธ |
| TRIM() |
TRIM(' TEST ') "COL1" |
TEST |
|
| LTRIM() |
LTRIM(' TEST ') "COL2" |
TEST _ |
|
| RTRIM() |
RTRIM(' TEST ') "COL3" |
_ TEST |
|
๊ทธ๋ฃนํจ์ (ํน์ง) ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ๋ค ์ค NULL์ด ์กด์ฌํ๋ค๋ฉด NULL์ ์ ์ธํ ์ํ๋ก ์ฐ์ฐ์ ์ํ
| ํจ์ |
EX |
๊ฒฐ๊ณผ |
๋น๊ณ |
| SUM() |
|
|
ํฉ |
| AVG() |
|
|
ํ๊ท |
| COUNT() |
COUNT๋ฅผ ์ํํ ๋๋ NULL ์ด ์กฐํ์์ ๋น ์ง ์ ์์ผ๋ฏ๋ก (*)์ผ๋ก ์กฐํ |
|
์นด์ดํธ |
| MAX() |
|
|
์ต๋๊ฐ |
| MIN() |
|
|
์ต์๊ฐ |
| VARIENCE() |
|
|
๋ถ์ฐ |
| STDDEV() |
|
|
ํ์คํธ์ฐจ |