MySQL 공부 내용을 깃허브 TIL 저장소에 정리를 해두었습니다. 이를 수행하고자 하는 작업을 기준으로 문법들을 다시 정리를 해보고자합니다. 이번 게시글에서는 윈도우 함수에 대해 정리해보았습니다.
SELECT columnname1
, columnname2
...
, function(columnname) OVER (PARTITION BY columnname ORDER BY columnname) AS columnname
FROM tablename
SELECT columnname
, ROW_NUMBER() OVER (ORDER BY value) AS new_name -- 공동 1위가 3명이어도 각각 1위, 2위, 3위
, RANK() OVER (ORDER BY value) AS new_name -- 공동 1위가 3명이면, 그 다음은 4위
, DENSE_RANK() OVER (ORDER BY value) AS new_name -- 공공동 1위가 3명이어도 그 다음은 2위
FROM tablename
# 밀기
LAG(컬럼) OVER (PARTITION BY columnname ORDER BY columnname)
LAG(컬럼, 칸수) OVER (PARTITION BY columnname ORDER BY columnname)
LAG(컬럼, 칸수, Defalt) OVER (PARTITION BY columnname ORDER BY columnname)
# 당기기
LEAD(컬럼) OVER (PARTITION BY columnname ORDER BY columnname)
LEAD(컬럼, 칸수) OVER (PARTITION BY columnname ORDER BY columnname)
LEAD(컬럼, 칸수, Defalt) OVER (PARTITION BY columnname ORDER BY columnname)