우당탕탕 개발일지
[SQL] 프로그래머스 GROUP BY: 조건에 맞는 사원 정보 조회하기 (level 2) 본문
💡문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/284527
💡SQL 코드 설계
HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블(별명 각각 D, E, G)에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요.
2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE로 해주세요.
설명 | 쿼리 |
상, 하반기 점수의 합을 나타내는 SCORE 필드 | SUM(G.SCORE) AS SCORE GROUP BY E.EMP_NO |
2022년도 평가 점수가 가장 높은 사원 선택 | ORDER BY SCORE DESC LIMIT 1 |
점수, 사번, 성명, 직책, 이메일을 조회 | SCORE, E.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAIL |
테이블 E와 G 조인 | JOIN HR_GRADE AS G ON E.EMP_NO = G.EMP_NO |
💡SQL 코드
-- 코드를 작성해주세요
SELECT
SUM(G.SCORE) AS SCORE, E.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAIL
FROM
HR_EMPLOYEES AS E
JOIN
HR_GRADE AS G
ON
E.EMP_NO = G.EMP_NO
GROUP BY
E.EMP_NO
ORDER BY
SCORE DESC
LIMIT 1
💡기억할 내용
1. 상, 하반기 점수의 합을 나타내는 SCORE 필드를 만들 때 GROUP BY EMP_NO이어야 하는데 처음에 GROUP BY HALF_YEAR로 잘못했다. 1분기와 2분기를 합한다고 해서 HALF_YEAR을 넣었는데, 생각해보니 그러니 1분기에 모든 사원들의 점수 합계외 2분기 점수 합계가 출력된다. 그러니 HALF_YEAR 말고 EMP_NO를 기준으로 그룹별로 묶고, SUM(SCORE)를 구해야 한다.
2. 상, 하반기 점수의 합을 구하는 부분에서 처음에 막혔는데, 그냥 SELECT문에 SUM(G.SCORE) AS SCORE를 넣고, GROUP BY E.EMP_NO 하면 끝나는 거였다.
3. 가장 높은 점수를 가진 사원을 뽑아내기 위해 MAX 함수를 써야할 것 같은데, 모르겠어서 점수 높은순으로 나열하고 위의 것만 뽑아냈다...근데 다른 사람들도 다 이렇게 풀었네? 헤헤
'SQL' 카테고리의 다른 글
[SQL] 프로그래머스 String, Date : 분기별 분화된 대장균 수 구하기 (level 2) (0) | 2024.07.02 |
---|---|
[SQL] 프로그래머스 SUM, MAX, MIN String, Date : 연도별 대장균 크기의 편차 구하기(level 3) (0) | 2024.06.29 |
[SQL] 프로그래머스 JOIN: 5월 식품들의 총매출 조회하기 (level 4) (0) | 2024.06.24 |
[SQL] 프로그래머스 Select : 특정 세대의 대장균 찾기 (level 4) (0) | 2024.06.20 |
[SQL] 프로그래머스 SELECT : 특정 물고기를 잡은 총 수 구하기 (level 2) (0) | 2024.03.26 |