SQL/분석함수

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

한기리 2020. 9. 19. 20:19
728x90
320x100

분석함수 사용 시 주의 사항

 

  • 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;

 

  • RAGNE방식에 정렬 표현식이 날짜 값인 경우 value_expr에 숫자 값과 인터벌 값을 사용할 수 있다.

SELECT hiredate, sal
      , SUM(sal) OVER(ORDER BY hiredate RANGE 90 PRECEDING) AS c1
      , SUM(sal) OVER(ORDER BY hiredate RANGE INTERVAL '3' MONTH PRECEDING) AS c2
 FROM emp
WHERE deptno = 30
ORDER BY 1;



  • 분석함수는 SELECT 절과 ORDER BY 절에서만 사용할 수 있다.

SELECT deptno, ename, sal
 FROM emp
WHERE SUM(sal) OVER(PARTITION BY deptno) >= 10000;

 

  • 인라인 뷰를 사용하면 WHERE 절에서 분석 함수의 결과 값을 사용할 수 있다.

SELECT deptno, ename, sal, c1
 FROM (SELECT a.*, SUM(a.sal) OVER(PARTITION BY a.deptno) AS c1 FROM emp a)
WHERE c1 >= 10000
ORDER BY 1, 2;

 

728x90
320x100