윈도우 함수(Window Functions)는 SQL에서 데이터 분석과 계산을 더욱 강력하고 유연하게 처리할 수 있게 해주는 기능입니다.
데이터 집합을 다양한 방식으로 처리할 수 있도록 도와주는 윈도우 함수는 특히 데이터 분석 및 리포트 작성에 유용합니다.
새로운 컬럼을 만들어서 출력합니다.
사용 예시:
-- 무조건 over가 있어야 window function 사용이 가능합니다.
SELECT column1, column2, ...
ROW_NUMBER() OVER () AS row_num
FROM table
;
ROW_NUMBER() : 각 행마다 순차적으로 숫자를 부여해주는 기능을 합니다. 즉, 기본적인 행 번호를 부여합니다.
활용 1:
SELECT emp_no, title, salary,
ROW_NUMBER() OVER (ORDER BY emp_no DESC) AS row_num
FROM titles
JOIN salaries ON titles.emp_no = salaries.emp_no;
ROW_NUMBER() 윈도우 함수를 사용하여 각 행에 순차적인 번호(row_num)를 부여합니다. 이 번호는 emp_no를 기준으로 내림차순으로 정렬된 결과에 대해 부여됩니다.
활용 2:
-- 여기서 over 뒤에 PARTITION BY는 그룹화하는 것으로 보면 됩니다.
SELECT emp_no, title, salary,
ROW_NUMBER() OVER (PARTITION BY emp_no ORDER BY salary DESC) AS row_num1,
ROW_NUMBER() OVER (PARTITION BY emp_no ORDER BY salary ASC) AS row_num2
FROM titles
JOIN salaries ON titles.emp_no = salaries.emp_no
WHERE title = 'Staff' AND emp_no <= 10006
ORDER BY emp_no, salary, row_num1;
데이터는 직원 번호(emp_no), 급여(salary), 그리고 row_num1에 따라 오름차순으로 정렬됩니다. 여기서도 ROW_NUMBER() 윈도우 함수를 활용하여 각 직원별로 급여 순위 및 역순위를 부여합니다.
PARTITION BY:
SQL의 윈도우 함수에서 데이터를 그룹화하는 데 사용되는 절입니다. 이 절은 윈도우 함수가 데이터를 처리할 때, 전체 집합을 여러 파티션으로 나누어 각 파티션에 대해 별도로 계산을 수행하도록 합니다.
결론
윈도우 함수는 데이터 분석에서 매우 유용한 도구입니다. 이 함수들을 활용하여 데이터 집합에 대해 정렬, 필터링, 집계 등을 유연하게 처리할 수 있습니다.
이상입니다.
728x90
'Data Analyst > SQL' 카테고리의 다른 글
[SQL] GROUP BY 사용하여 문제풀기 (Top Earners) (0) | 2024.10.09 |
---|---|
SQL - Window Function (RANK, DENSE_RANK, LAG, LEAD) (1) | 2024.09.25 |
SQL - Index, Case Statement (1) | 2024.09.17 |
SQL - Trigger (0) | 2024.09.16 |
SQL - Local, Session, Global Variables (0) | 2024.09.16 |