문제 링크입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/284527
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문제
HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요.
2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE로 해주세요.
풀이1 - LIMIT 1 을 사용
WITH MAX_SCORE_EM AS (
SELECT EMP_NO,
SUM(SCORE) AS SCORE
FROM HR_GRADE
GROUP BY EMP_NO
ORDER BY SCORE DESC
LIMIT 1
)
SELECT MAXS.SCORE,
EM.EMP_NO,
EM.EMP_NAME,
EM.POSITION,
EM.EMAIL
FROM MAX_SCORE_EM AS MAXS
INNER JOIN HR_EMPLOYEES AS EM ON EM.EMP_NO = MAXS.EMP_NO
- HR_GRADE 테이블에서 각 사원별로 한 해 평가 점수를 합산하고, 이를 내림차순으로 정렬했습니다.
- 그런 다음, LIMIT 1을 사용하여 가장 높은 평가 점수를 가진 사원의 EMP_NO를 추출하여 MAX_SCORE_EM 테이블을 생성했습니다.
- MAX_SCORE_EM 테이블과 HR_EMPLOYEES 테이블을 INNER JOIN하여, MAX_SCORE_EM 테이블에 있는 가장 높은 평가 점수를 가진 사원의 EMP_NO와 일치하는 사원의 정보를 출력했습니다.
풀이2 - ROW_NUMBER() 사용, LIMIT X
WITH R_SCORE_EM AS (
SELECT EMP_NO,
SUM(SCORE) AS 'SCORE',
ROW_NUMBER() OVER (ORDER BY SUM(SCORE) DESC) AS RN
FROM HR_GRADE
GROUP BY EMP_NO
)
SELECT RE.SCORE,
EM.EMP_NO,
EM.EMP_NAME,
EM.POSITION,
EM.EMAIL
FROM R_SCORE_EM AS RE
INNER JOIN HR_EMPLOYEES AS EM ON EM.EMP_NO = RE.EMP_NO
WHERE RE.RN = 1
- HR_GRADE 테이블에서 각 사원별로 한 해 평가 점수를 합산하고, 이를 ROW_NUMBER() 함수를 사용하여 내림차순으로 순위를 매겼습니다.
- R_SCORE_EM 테이블과 HR_EMPLOYEES 테이블을 INNER JOIN하여, R_SCORE_EM 테이블에 순위가 1인 사원의 EMP_NO와 일치하는 사원의 정보를 출력했습니다.
'Skills > SQL' 카테고리의 다른 글
[프로그래머스] SQL - '업그레이드 할 수 없는 아이템 구하기' 문제풀이 (0) | 2024.04.19 |
---|---|
[프로그래머스] SQL - '분기별 분화된 대장균의 개체 수 구하기' 문제풀이 (0) | 2024.04.17 |
[프로그래머스] SQL - '대장균의 크기에 따라 분류하기 1' 문제풀이 (0) | 2024.04.15 |
[프로그래머스] SQL - '부서별 평균 연봉 조회하기' 문제풀이 (0) | 2024.04.13 |
[프로그래머스] SQL - '물고기 종류 별 대어 찾기' 문제풀이 (0) | 2024.04.12 |