상세 컨텐츠

본문 제목

[오라클쿼리] SQL SELECT EXP 지수, LN 자연로그, LOG 로그값, SUM 합계, AVG 평균, POWER 제곱함수, OVER 서브쿼리 개선함수, PARTITION BY = GROUP BY, ORDER BY

프로그래밍/SQL

by dobioi 2021. 11. 22. 12:25

본문

반응형

어떻게 하다보니, 잘 사용하지 않던 펑션을 사용하게 됐다. 그래서 간단히라도 정리하는 것이 좋을 것 같아 남겨본다.

 

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 절은 그룹으로 지정된 로우의 순서를 지정

 

728x90

< 실재 사용한 쿼리 >

 

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 조건 = 조건

 

  • EXP는 지수 함수로 e(e=2.71828183…)의 n제곱 값을 반환
  • LN 함수는 자연 로그 함수로 밑수가 e인 로그 함수
  • LOG는 n2를 밑수로 하는 n1의 로그 값을 반환
  • SUM은 열의 합계를 구하는 함수
  • AVG는 열의 평균을 구하는 함수
  • POWER는 제곱함수
  • OVER는 ORDER BY, GROUP BY 서브쿼리를 개선하기 위한 함수
  • PARITION BY는 GROUP BY를 OVER절에서 사용
  • ORDER BY는 OVER절에서 정렬조건을 줄 때 사용

 

 

입력

    SELECT EXP(2), LN(2.713), LOG(10, 100)
      FROM DUAL;
결과

    EXP(2)     LN(2.713)    LOG(10,100)
    ---------- ------------ -----------
     7.3890561  0.998055034           2

 

 

오라클 SQL과 PL/SQL을 다루는 기술: ⑥ EXP(n), LN(n) 그리고 LOG(n2, n1)

 

thebook.io

 

 

관련글 더보기

댓글 영역