CUBE() ROLLUP()보다 더 디테일한 결과 반환 SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY CUBE(DEPTNO, JOB) ORDER BY 1, 2; --==>> /* 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 -- 모든 부서 CLERK 직종의 급여합 (null)M..
ROLLUP 총합 SELECT DEPTNO "부서번호", SUM(SAL) "급여합" FROM TBL_EMP GROUP BY ROLLUP(DEPTNO); --==>> /* 10 8750 2010875 30 9400 (null) 8700 -- 부서번호를 갖지 못한 직원들의 급여합 (null)37725 -- 모든부서 직원들의 급여합 */ -- TBL_EMP의 경우 DEPTNO이 NULL인 경우가 포함되어 있다. SELECT NVL2(DEPTNO, TO_CHAR(DEPTNO), '모든부서') "부서번호", SUM(SAL) "급여합" FROM EMP GROUP BY ROLLUP(DEPTNO); --==>> /* 108750 2010875 309400 모든부서29025 */ -- EMP의 경우 DEPTNO가 NUL..
SUM() 합, AVG() 평균, COUNT() 카운트, MAX() 최댓값, MIN() 최솟값, VERIENCE() 분산, STDDEV() 표준편차 ※ 그룹 함수의 가장 큰 특징 처리해야 할 데이터들 중 null이 존재한다면(포함되어 있다면) null은 제외한 상태로 연산을 수행 즉, 그룹 함수가 작동하는 과정에서 null은 연산의 대상에서 제외된다. SUM() 합 총합을 조회 SELECT SUM(SAL) FROM EMP --==>> 29025 COUNT() 행(레코드)의 갯수 조회 → 데이터가 몇 건인지 확인 SELECT COUNT(ENAME) FROM EMP; --==>> 14 SELECT COUNT(COMM) -- COMM 컬럼 행의 갯수 조회 → NULL은 제외!! FROM EMP; --==>> ..
RANK() → 등수(순위)를 반환하는 함수 SELECT EMPNO "사원번호", ENAME "사원명", DEPTNO "부서번호", SAL "급여" , RANK() OVER(ORDER BY SAL DESC) "전체급여순위" -- (내림차순으로 순위) FROM EMP; --==>> /* 7839KING105000 1 7902FORD203000 2 : 7900JAMES30 95013 7369SMITH20 80014 */ PARTITION BY SELECT EMPNO "사원번호", ENAME "사원명", DEPTNO "부서번호", SAL "급여" , RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) "부서별급여순위" , RANK() OVER(ORDER BY SAL DE..
VIEW 생성 CREATE OR REPLACE VIEW VIEW_SAWON -- (VIEW는 덮어쓰기 된다.) AS SELECT ~ FROM ~ ; ORA-01031: insufficient privileges 뷰를 생성하려는데 위와 같은 오류가 난다면 이는 권한이 부족하기 때문 그래서 SYS로 넘어가서 SYS로 부터 CREATE VIEW 권한을 부여받은 이후 다시 실행 SCOTT 계정에서 VIEW를 생성할 수 있는 권한 부여 CREATE VIEW GRANT CREATE VIEW TO SCOTT; SCOTT 계정으로부터 VIEW 를 생성할 수 있는 권한 박탈 REVOKE CREATE VIEW FROM SCOTT; 부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다. 이 글에 부족한 부분이 ..
CASE 구문(조건문, 분기문) CASE WHEN THEN ELSE END SELECT CASE 5+2 WHEN 4 THEN '5+2=4' ELSE '5+2는 몰라요' END FROM DUAL; --==>> 5+2는 몰라요 SELECT CASE 5+2 WHEN 7 THEN '5+2=7' ELSE '5+2=6' END FROM DUAL; --==>> 5+2=7 SELECT CASE 1+1 WHEN 2 THEN '1+1=2' WHEN 3 THEN '1+1=3' WHEN 4 THEN '1+1=4' ELSE '난 산수 싫어' END "RESULT" FROM DUAL; --==>> 1+1=2 SELECT CASE 1+1 WHEN 2 THEN '1+1=2' WHEN 3 THEN '1+1=3' WHEN 2 THEN ..