Database/Oracle SQL2: 16개의 글
KEEP (최초값, 최종값)KEEP 함수의 사용방법은 아래와 같으며, 예제를 실습하면서 이해해 보겠습니다.- MAX() KEEP(DENSE_RANK FIRST[LAST] ORDER BY)- MIN() KEEP(DENSE_RANK FIRST[LAST] ORDER BY)아래는 부서별 최대급여자 급여(MAX_SAL)와 사번(MAX_E), 최소급여자 급여(MIN_SAL)와 사번(MIN_E)을 조회하는 예제입니다.SELECT deptno , MAX(sal) max_sal , MAX(empno) KEEP(DENSE_RANK LAST ORDER BY sal) max_e , MIN(sal) min_sal , MIN(empno) KEEP(DENSE_RANK FIRST ORDER BY sal) min_e FROM emp ..
LAG, LEAD (다른 행의 값을 참조)- LAG (컬럼명[,offset][,default]) : 현재 ROW 기준으로 이전 행을 참조- LEAD (컬럼명[,offset][,default]) : 현재 ROW 기준으로 다음 행을 참조아래 예제는 이전 row(S_1), 다음 row(S_2), 다음 두 번째 row(S_3)의 급여를 조회하는 예제이다. 다음 두 번째 row(S_3) 값이 NULL인 경우 0을 출력한다.SELECT deptno, empno, sal , LAG (sal) OVER(ORDER BY deptno, empno) s_1 , LEAD(sal) OVER(ORDER BY deptno, empno) s_2 , LEAD(sal, 2, 0) OVER(ORDER BY deptno, empno) s_..
윈도우 함수란- 분석함수 중에서 윈도우절(WINDOWNING 절)을 사용하는 함수를 윈도우 함수라고 한다.- 윈도우절을 사용하면 PARTITION BY 절에 명시된 그룹을 좀 더 세부적으로 그룹핑 할 수 있다.- 윈도우절은 분석함수중에서 일부(AVG, COUNT, SUM, MAX, MIN)만 사용 할 수 있다.WINDOWNING 절 Syntax윈도우 함수 OVER ( PARTITION BY 절 ORDER BY 절 [ASC|DESC] ROWS | RANGE BETWEEN UNBOUNDED PRECEDING | n PRECEDING | CURRENT ROW AND UNBOUNDED FOLLOWING | n FOLLOWING | CURRENT ROW - ROWS : 물리적인 ROW 단위로 행 집합을 지정한다...
UM, MIN, MAX, AVG, COUNT등의 집계 함수도 분석함수로 사용할 수 있다.SUM (누적합계)아래는 사원의 전체급여 합계(all_sum), 부서별 급여 합계(dept_sum), 부서별로 누적 합계(nujuk_sum)를 조회하는 예이다.SELECT empno, ename, deptno, SUM(sal) OVER () all_sum, SUM(sal) OVER (PARTITION BY deptno) dept_sum, SUM(sal) OVER (PARTITION BY deptno ORDER BY empno) nujuk_sum FROM emp; EMPNO ENAME DEPTNO ALL_SUM DEPT_SUM NUJUK_SUM ------ ------- ---------- ---------- -----..
순위함수- RANK 함수는 순위를 부여하는 함수로 동일순위 처리가 가능하다. (중복 순위 다음 순서 건너뜀 - 1,2,2,4)- DENSE_RANK 함수는 RANK 함수와 같은 역할을 하지만 동일 등수가 순위에 영향이 없다.(중복순위 다음 순위 연속 - 1,2,2,3)- ROW_NUMBER 함수는 특정 순위로 일련번호를 제공하는 함수로 동일순위 처리가 불가능하다. (중복순위 없이 유일값 - 1,2,3,4)- 순위 함수 사용시 ORDER BY절은 필수로 입력해야 한다.순위함수 - RANK아래는 급여가 높은 순서대로 순위를 구하는 예제이다.SELECT deptno, empno, sal , RANK() OVER(ORDER BY sal DESC) rk FROM emp; DEPTNO EMPNO SAL RK----..
분석함수란?- 테이블에 있는 데이터를 특정 용도로 분석하여 결과를 반환하는 함수- 복잡한 계산을 단순하게 처리해주는 함수- 쿼리 결과Set을 대상으로 계산을 수행하는 함수- SELECT 절에서 수행됨FROM, WHERE, GROUP BY 절에서 사용 불가ORDER BY 구문에서는 사용 가능- 오라클 8.1.6 부터 분석함수 지원집계함수 vs 분석함수집계함수집계함수는 여러행 또는 테이블 전체 행으로부터 그룹별로 집계하여 결과를 반환한다.SELECT deptno , SUM(sal) s_sal FROM emp GROUP BY deptno; [그림] 집계함수 실행결과분석함수분석 함수는 집계 결과를 각 행마다 보여준다.SELECT deptno , empno , sal , SUM(sal) OVER(PARTITION..