DB/MySQL

[MySQL] SUM() OVER()함수

동호다찌 2023. 1. 17. 12:23

순위함수(분석함수)

결과에 순번, 순위를 매기는 함수

비집계함수  RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다.

SELECT
<순위함수이름> (arguments)
OVER ([PARTITION BY <partion_by_list>]
ORDER BY <order_by_list>)
FROM 테이블명;

PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정

ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행


누적 합계 구하기 

윈도우 함수와 SUM() 함수를 함께 사용해 누적 합계를 구할 수 있습니다.


SELECT DATE(payment_date) AS dt, 
       SUM(amount)
  FROM sakila.payment p 
 GROUP BY dt
 ORDER BY dt ASC

해당 쿼리는 단순히 결제일시를 결제일로 변환하고 결제일 별로 amout를 SUM()한 쿼리이다.

 

 

SELECT DATE(payment_date) AS dt, 
       SUM(amount),
       SUM(SUM(amount)) OVER(ORDER BY DATE(payment_date) ASC )
  FROM sakila.payment p 
 GROUP BY dt
 ORDER BY dt ASC

해당 쿼리는 SUM()된 값을 다시 SUM() OVER()를 통해 누적 합계를 구하는 쿼리이다.

 

'DB > MySQL' 카테고리의 다른 글

[MySQL] FIRST_VALUE()  (0) 2023.01.18
[MySQL] IFNULL()  (0) 2023.01.18
[MySQL] LAG() 함수  (0) 2023.01.17
[MySQL] LEAD() 함수  (0) 2023.01.17
[MySQL] ROW_NUMBER() 함수  (0) 2023.01.17