https://school.programmers.co.kr/learn/courses/30/lessons/284527
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]
HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요.
2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE로 해주세요.
[나의 풀이]
SELECT SUM(G.SCORE) SCORE,
G.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAIL
FROM HR_EMPLOYEES E JOIN HR_GRADE G
ON E.EMP_NO=G.EMP_NO
GROUP BY EMP_NO, YEAR
ORDER BY SCORE DESC
LIMIT 1;
GROUP BY EMP_NO로만 해도 통과가 되는데 EMP_NO가 primary key라서 그런듯
[다른 풀이]
WITH문을 이용하여 구하는 방법
WITH SUM_SCORES
AS (
SELECT SUM(GRD.SCORE) SCORE
, EMP.EMP_NO EMP_NO
, EMP.EMP_NAME EMP_NAME
, EMP.POSITION POSITION
, EMP.EMAIL EMAIL
FROM HR_EMPLOYEES EMP
JOIN HR_GRADE GRD
ON GRD.EMP_NO = EMP.EMP_NO
WHERE GRD.YEAR = '2022'
GROUP
BY EMP.EMP_NO
)
SELECT *
FROM SUM_SCORES
WHERE SCORE = (
SELECT MAX(SCORE)
FROM SUM_SCORES
)
;
-참고
[프로그래머스] 조건에 맞는 사원 정보 조회하기 (MySQL)
문제https://school.programmers.co.kr/learn/courses/30/lessons/284527 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘
ilutoo.tistory.com
SELECT
SUM(SCORE) SCORE,
E.EMP_NO,
EMP_NAME, POSITION,
EMAIL
FROM
HR_EMPLOYEES E JOIN HR_GRADE G
ON E.EMP_NO = G.EMP_NO
GROUP BY E.EMP_NO
HAVING
SUM(SCORE) = (SELECT MAX(R.RESULT)
FROM (SELECT SUM(SCORE) RESULT , EMP_NO
FROM HR_GRADE
GROUP BY EMP_NO) AS R
)
HAVING에 조건을 MAX조건을 걸어주는 경우
-참고
https://20240228.tistory.com/202
[MySQL] 프로그래머스 조건에 맞는 사원 정보 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/284527 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
20240228.tistory.com
'프로그래머스 > My SQL' 카테고리의 다른 글
노선별 평균 역 사이 거리 조회하기 (0) | 2024.11.13 |
---|---|
연도 별 평균 미세먼지 농도 조회하기 (0) | 2024.11.13 |
💫조건에 맞는 개발자 찾기 (0) | 2024.11.11 |
💫업그레이드 된 아이템 구하기 (0) | 2024.11.10 |
조건에 부합하는 중고거래 상태 조회하기 (0) | 2024.11.09 |