[Programmers/mysql] 284527: 조건에 맞는 사원 정보 조회하기

songeunm·2024년 9월 10일

PS - sql

목록 보기
11/58
post-thumbnail

문제

Lv. 2 / GROUP BY

문제 흐름

쉽다! 고 생각했는데 살짝 삐끗한 부분이 있었다.
생각한대로라면 SUMMAX를 동시에 사용해야하는데 SUM에만 GROUP BY로 그룹화 지정이 들어가야했다.
한번에 하고싶어서 이래저래 많이 에러를 봤다.
하지만 역시 한번 그룹화를 통해 토탈 스코어 값을 계산한 뒤 다시 최댓값을 찾는 방식으로 진행했다.

이전 포스팅에서처럼 그룹화의 기준이 아니면서 집계함수가 쓰이지 않은 컬럼을 여러개 출력해야하는데 이때문에 MAX의 결과값을 WHERE에 조건으로 붙여주었다.

이 코드를 작성하면서도 계속 더 깔끔하게 작성할 수 있을 것 같은데... 하는 생각을 계속 했다.
아니나 다를까 질문 게시판에서 정말 명료하게 풀이하신 분을 봤다.
ORDERLIMIT을 통해 MAX를 대체한 케이스인데 맞다 이런 방법도 있었지, 싶었다.
한번 읽어보면 좋을 것 같다.
JOIN, LIMIT를 활용한 문제풀이!

코드

/*
조건에 맞는 사원 정보 조회하기
GROUP BY
*/

WITH CALC_SCORE as (
    SELECT SUM(SCORE) as SCORE
    FROM HR_GRADE
    WHERE YEAR = 2022
    GROUP BY EMP_NO
)

SELECT  SUM(SCORE) as SCORE,
        EMP_NO,
        EMP_NAME,
        POSITION,
        EMAIL
FROM HR_EMPLOYEES LEFT JOIN HR_GRADE
USING (EMP_NO)
GROUP BY EMP_NO
HAVING SUM(SCORE) = (SELECT MAX(SCORE) FROM CALC_SCORE);

마무리

확실히 python도 sql도 오랜만에 문제를 풀다보니 시야가 좁아졌다는 생각이 들었다.
앞으로 꾸준히 학습해야겠지만, 문제를 푸는 것만이 능사는 아니다.
알고있지만 하기 어려운 것이기도 한데..
현재는 빈약하게 PS로만 채워지고있는 이 블로그에 여러 다른 정보들을 결합한 공부 내용을 정리하는 것도 좋겠다.

당장 이력서 쓰는 것에 마음이 급해서 (또 곧 있는 가족여행에 마음이 둥실둥실해서..) 공부가 많이 뒷순위로 밀렸는데 시간을 좀더 쪼개서 해야할 일을 병행해서 처리할 수 있는 사람이 되어야겠다.

profile
데굴데굴 구르는 개발자 지망생

0개의 댓글