꿈은 데이터분석가, 취미는 계획

[MY SQL] 상/하반기 점수의 합이 가장 높은 사원 찾기 본문

SQL/sql문풀

[MY SQL] 상/하반기 점수의 합이 가장 높은 사원 찾기

data_2080 2024. 4. 18. 15:24
728x90

출처: [프로그래머스 스쿨 - 코딩테스트 연습 - MY SQL 문제] : 조건에 맞는 사원정보 조회하기

링크: https://school.programmers.co.kr/learn/courses/30/lessons/284527


문제(일부): 2022년 상/하반기 평가 점수의 합이 가장 높은 사원을 출력

 

1. GROUP BY 활용하기

1)필요한 정보를 조회하기 위해 2개 테이블 JOIN
2) 상/하반기 점수를 합하기 위해 직원ID(HE.EMP_NO)로 GROUP BY 하여 SUM(HG.SCORE)
3) LIMIT 1으로 가장 높은 점수 직원 확인
SELECT SUM(HG.SCORE) AS SCORE, HE.EMP_NO, HE.EMP_NAME, HE.POSITION, HE.EMAIL
FROM HR_EMPLOYEES AS HE
    INNER JOIN HR_GRADE AS HG
        ON HE.EMP_NO = HG.EMP_NO
WHERE YEAR = 2022 
GROUP BY HE.EMP_NO
ORDER BY SCORE DESC
LIMIT 1

 

2. PARTITION BY 활용하기
1번의 (1), (2)은 동일하지만
GROUP BY가 아닌 PARTITION BY로 직원ID(HE.EMP_NO)를 묶어서 SUM(HG.SCORE)

SELECT SUM(HG.SCORE) OVER (PARTITION BY HE.EMP_NO) AS SCORE
	, HE.EMP_NO 
	, HE.EMP_NAME
	, HE.POSITION
	, HE.EMAIL
FROM HR_EMPLOYEES  AS HE
    INNER JOIN HR_GRADE AS HG
        ON HE.EMP_NO = HG.EMP_NO
WHERE HG.YEAR = 2022
ORDER BY SCORE DESC
LIMIT 1

 

 
728x90