SQL 쿼리 연습/GROUP BY

[Lv.2 / 프로그래머스 / SQL] 조건에 맞는 사원 정보 조회하기

김세진 2024. 12. 16. 20:24
반응형

 

 

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

풀이(MySQL)

 

HR_DEPARTMENT 테이블은 문제 해결을 위해 불필요하다. 따라서 HR_EMPLOYEES, HR_GRADE 두 테이블로 문제를 해결할 수 있다.

 

핵심은 상반기 하반기의 점수를 합쳐서 내림차순으로 정렬을 하는 것이다. HALF_YEAR야 어찌 되었든, 한 사원 당 YEAR 별 SCORE는 상반기와 하반기 최대 두 개가 존재할 것이므로, EMP_NO만 그룹으로 묶어 SCORE를 집계한다면 한 해의 총 점수를 구할 수 있을 것이다.

 

따라서 EMP_NO 컬럼을 기준으로 GROUP BY로 묶은 뒤, SUM() 집계 함수로 SCORE의 합을 구하면 문제를 해결할 수 있다.

 

SELECT
    SUM(SCORE) AS SCORE, EMP.EMP_NO, EMP_NAME, POSITION, EMAIL
FROM
    HR_EMPLOYEES AS EMP
INNER JOIN
    HR_GRADE AS GR
ON
    GR.EMP_NO = EMP.EMP_NO
WHERE
    YEAR = '2022'
GROUP BY
    EMP_NO
ORDER BY
    SCORE DESC
LIMIT 1

 

 

 

 

 

반응형