[오라클쿼리] SQL SELECT EXP 지수, LN 자연로그, LOG 로그값, SUM 합계, AVG 평균, POWER 제곱함수, OVER 서브쿼리 개선함수, PARTITION BY = GROUP BY, ORDER BY
어떻게 하다보니, 잘 사용하지 않던 펑션을 사용하게 됐다. 그래서 간단히라도 정리하는 것이 좋을 것 같아 남겨본다.
SUM(amt)는 합계를 구하고
OVER (PARTITION BY GUBUN_CODE ORDER BY GUBUN)는 구분코드별로 그룹을 짓는다는 의미
함수부 OVER (PARTITION BY 칼럼1, 칼럼2, ... ORDER BY ...)
구문은 함수부과 OVER 절로 구성됨
OVER 절은 다시 PARTITION BY와 ORDER BY 절로 나뉨
PARTITION BY 절이 로우의 그룹인 윈도우를 지정하는 역할
ORDER BY 절은 그룹으로 지정된 로우의 순서를 지정
< 실재 사용한 쿼리 >
SELECT 1 / EXP(SUM(LN(POWER( (1 + CASE WHEN GUBUN = 1 THEN 0 ELSE EIR_RATE), (1/12) )) ) OVER(PARTITION BY GUBUN_CODE ORDER BY GUBUN)) AS BASIC_DF
, 1 / EXP(SUM(LN(POWER((1+ EIR_RATE), (1/12))) ) OVER(PARTITION BY GUBUN_CODE ORDER BY GUBUN)) AS END_DF
FROM TMPL_TABLE
WHERE 조건 = 조건
입력
SELECT EXP(2), LN(2.713), LOG(10, 100)
FROM DUAL;
결과
EXP(2) LN(2.713) LOG(10,100)
---------- ------------ -----------
7.3890561 0.998055034 2
댓글 영역