목록으로
부서별 급여 순위
Programmers SQLSilver윈도우 함수RANKPARTITION BY
employees 테이블에서 각 부서 내 직원들의 급여 순위(RANK)와 부서 평균 급여를 함께 조회하세요. 결과는 부서별, 순위순으로 정렬되어야 합니다. 테이블 컬럼: employee_id, department, salary, hire_date
AI 분석 결과
0우수
AI 분석 점수
AlgoSu AI가 생성한 실제 분석 샘플입니다.
윈도우 함수를 활용한 부서별 급여 집계 쿼리로 기본 구조가 올바릅니다. CTE로 리팩터링하면 가독성과 재사용성이 크게 향상됩니다.
시간:
O(n log n)공간: O(n)카테고리별 점수
correctness88
PARTITION BY와 ORDER BY를 올바르게 사용하여 부서별 정확한 순위를 산출합니다.
efficiency82
윈도우 함수는 GROUP BY 대비 원본 행과 집계를 함께 반환하므로 적절한 선택입니다. department, salary 복합 인덱스 추가를 권장합니다.
readability88
컬럼명과 별칭이 명확하고 들여쓰기가 일관적입니다. CTE로 감싸면 재사용성이 높아집니다.
bestPractice80
WITH(CTE)를 사용하면 서브쿼리를 이름으로 참조할 수 있어 복잡한 분석 쿼리의 유지보수성이 향상됩니다.
제출 코드
1SELECT
2 employee_id,
3 department,
4 salary,
5 RANK() OVER (
6 PARTITION BY department
7 ORDER BY salary DESC
8 ) AS dept_rank,
9 AVG(salary) OVER (PARTITION BY department) AS dept_avg
10FROM employees
11ORDER BY department, dept_rank;개선된 코드 예시
1WITH ranked AS (
2 SELECT
3 employee_id,
4 department,
5 salary,
6 RANK() OVER (
7 PARTITION BY department
8 ORDER BY salary DESC
9 ) AS dept_rank,
10 ROUND(
11 AVG(salary) OVER (PARTITION BY department),
12 2
13 ) AS dept_avg_salary
14 FROM employees
15)
16SELECT *
17FROM ranked
18ORDER BY department, dept_rank;