반응형

SQL/분석함수 12

[SQL]분석함수(analytic function)_KEEP 키워드

KEEP 키워드 분석 함수도 KEEP 키워드를 사용할 수 있다. KEEP 키워드를 사용하면 ANALYTIC 절에 QUERY PARTITION 절만 사용할 수 있다. KEEP 키워드를 사용해 그룹 내 최대, 최소값을 구할 수 있다. analytic_function([ arguments ]) KEEP(DENSE_RANK { FIRST | LAST } ORDER BY expr) [OVER([ query_partition_clause ])] ex 1 ) job 파티션별 sal 최소인 행을 대상으로 comm의 최대 값을 출력해라. SELECT ename, job, sal, comm ,① MAX(comm) KEEP(DENSE_RANK FIRST ORDER BY sal) OVER(PARTITION BY job) AS..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_LAG, LEAD, LISTAGG

* LAG함수, LEAD함수, LISTAGG함수를 살펴보자 | LAG 함수 LAG함수는 현재 행에서 offset 이전 행의 value_expr을 반환한다. offset은 행 기준이며 기본 값은 1이다. default에 이전 행이 없을 경우 반환할 값을 지정할 수 있다. default의 기본값은 널이다. LAG(value_expr[, offset [, default]])[IGNORE NULLS] OVER([query_partition_clause] order_by_clause) ex 1 ) SELECT hiredate, sal , LAG(sal) OVER(ORDER BY hiredate) AS c1 , LAG(sal,3) OVER(ORDER BY hiredate) AS c2 FROM emp WHERE de..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_순차함수(FIRST_VALUE, LAST_VALUE, NTH_VALUE)

순차 함수 * 순차함수는 순차에 해당하는 값을 가져오는 함수다. | FIRST_VALUE 함수 FIRST_VALUE 함수는 윈도우 첫 행의 expr을 반환한다. IGNORE NULLS 키워드를 기술하면 널이 무시된다. FIRST_VALUE(expr)[IGNORE NULLS] OVER(analytic_clause) ex 1 ) EMP 테이블에서 부서번호가 30이고, 직업별로 입사를 가장 먼저한 사람의 급여를 구해라. SELECT job,hiredate, sal , FIRST_VALUE(sal) OVER(PARTITION BY job ORDER BY hiredate) AS c1 FROM emp WHERE deptno = 30 ORDER BY 1, 2; - 위 결과값을 보면 부서번호가 30인 CLERK, MA..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_분포함수(PERCENTILE_CONT, PERCENTILE_DISC, MEDIAN)

분포 함수 * 분포함수는 분포 모형에 따른 분포 값을 반환한다. | PERCENTILE_CONT 함수 PERCENTILE_CONT 함수는 연속 분포 모델에서 expr에 지정한 백분위 값에 해당하는 값을 반환한다. expr은 0 ~ 1의 범위를 지정할 수 있다. PERCENTILE_CONT(expr) WITHIN GROUP(ORDER BY expr [DESC | ASC])[OVER(query_partition_clause)] ex ) SELECT job, ename, sal , PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY sal) OVER(PARTITION BY job) AS c1 FROM emp WHERE deptno = 30 ORDER BY 1, 3, empno; | ..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_순위함수(NTILE, CUME_DIST, PERCENT_RANK, RATIO_TO_REPORT)

순위 함수 | NTILE 함수 NTILE 함수는 order_by_clause에 따라 행을 정렬하고, expr의 개수만큼 버킷을 생성한 후, 행에 해당하는 버킷 번호를 할당한다. NTILE(expr) OVER([query_partition_clause] order_by_clause) ex 1 ) SELECT sal , NTILE(1) OVER(ORDER BY sal) AS c1, NTILE(2) OVER(ORDER BY sal) AS c2 , NTILE(3) OVER(ORDER BY sal) AS c3, NTILE(4) OVER(ORDER BY sal) AS c4 , NTILE(5) OVER(ORDER BY sal) AS c5, NTILE(6) OVER(ORDER BY sal) AS c6 , NTILE(7..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_순위함수(RANK, DENSE_RANK, ROW_NUMBER)

순위 함수 * 순위 함수는 정렬 조건에 따른 순위를 반환한다. 순위 집계 함수는 가상의 행을 생성하지만, 순위 분석 함수는 실제의 행으로 값을 계산한다. | RANK 함수 RANK 함수는 order_by_clause에 따른 순위를 반환한다. expr이 동일하면 동순위를 부여하고, 다음 순위는 동순위의 개수만큼 건너뛴다. RANK() OVER([query_partition_clause] order_by_clause) ex ) SELECT empno, ename, sal, RANK() OVER(ORDER BY sal) AS c1 FROM emp WHERE deptno = 30 ORDER BY 3, 1; | DENSE_RANK 함수 DENSE_RANK 함수도 order_by_clause에 따른 순위를 반환한다..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_통계함수(STDDEV, VARIANCE)

통계 함수 * 통계 함수는 통계에 관련된 값을 계산한다. | STDDEV 함수 STDDEV 함수는 expr의 표준편차를 반환한다. STDDEV ([DISTINCT | ALL] expr) OVER(analytic_clause) ex ) SELECT job, sal, STDDEV(sal) OVER(PARTITION BY job) AS c1 FROM emp WHERE deptno = 30 ORDER BY 2, 1; | VARIANCE 함수 VARIANCE 함수는 expr의 분산을 반환한다. VARIANCE([DISTINCT | ALL] expr) OVER(analytic_clause) ex ) SELECT job, sal, VARIANCE(sal) OVER(PARTITION BY job) AS c1 FROM ..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_기본함수(COUNT, MIN, MAX, SUM, AVG)

기본 함수 기본 함수는 자주 사용하는 분석 함수다. 행의 개수, 최저, 최고, 합계, 평균 등을 반환한다. | COUNT 함수 COUNT 함수는 전체 행의 개수나 expr의 개수를 반환한다. COUNT({* | [DISTINCT | ALL] expr}) OVER(analytic_clause) ex ) SELECT job, COUNT(*) OVER(PARTITION BY job) AS c1 FROM emp WHERE deptno = 30 ORDER BY 1; | MIN 함수 MIN 함수는 expr의 최저 값을 반환한다. MIN(expr) OVER(analytic_clause) ex ) SELECT empno, sal, comm , MIN(comm) OVER(ORDER BY sal, empno ROWS UN..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_분석함수에는 어떤 절이 사용가능할까?

분석함수에는 어떤 절이 사용가능할까? * 아래 표에서 WINDOWING 절과 KEEP 절을 사용할 수 있는 분석함수와 WITHIN GROUP 절을 사용하는 분석함수를 확인할 수 있다. 기본 함수 함수WINDOWINGKEEPWITHIN GROUP 함수 WINDOWING KEEP WITHIN GROUP COUNT Y Y MIN Y Y MAX Y Y SUM Y Y AVG Y Y 통계 함수 함수 WINDOWING KEEP WITHIN GROUP STDDEV Y Y VARIANCE Y Y 순위 함수 함수 WINDOWING KEEP WITHIN GROUP RANK DENSE_RANK ROW_NUMBER NTILE CUME_DIST PERCENT_RANK RATIO_TO_REPORT 분포함수 함수 WINDOWING ..

SQL/분석함수 2020.09.19

[SQL]분석함수(analytic function)_사용 시 주의사항

분석함수 사용 시 주의 사항 RANGE 방식에 value_expr을 지정하면 ORDER BY 절에 숫자 값이나 날짜 값을 사용해야한다. (문자 값을 사용하면 값을 계산할 수 없기 때문에 에러가 발생 한다) SELECT job, sal , SUM(sal) OVER(ORDER BY job RANGE 1 PRECEDING) AS c1 FROM emp WHERE deptno = 30; RANGE 방식에 value_expr을 지정하면 정렬 표현식을 1개만 사용할 수 있다. (다수의 정렬 표현식을 사용하면 에러가 발생한다) SELECT job, sal , SUM(sal) OVER(ORDER BY sal, comm RANGE 1 PRECEDING) AS c1 FROM emp WHERE deptno = 30; RAGN..

SQL/분석함수 2020.09.19
728x90
반응형