[SQL] 조건에 맞는 사원 정보 조회하기

Ray·2025년 6월 10일

SQL

목록 보기
23/39

🔎 문제설명

  • 출처: 프로그래머스
  • 사용언어(RDBMS): SQL(MySQL)
  • 문제:

    HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요. 2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE로 해주세요.




✅ 제출답안

# 풀이1
SELECT SUM(HG.SCORE) AS SCORE, 
       HE.EMP_NO, 
       HE.EMP_NAME, 
       HE.POSITION, 
       HE.EMAIL 
FROM HR_GRADE AS HG JOIN HR_EMPLOYEES AS HE 
    ON HG.EMP_NO = HE.EMP_NO
WHERE HG.YEAR = 2022
GROUP BY EMP_NO
ORDER BY SCORE DESC
LIMIT 1;



🚀 풀이기록

처음 문제를 풀었을 때 풀이1방법으로 풀었다. 이 풀이 단점은 평가점수가 가장 높은 사람의 수가 다수일경우에도 한 명만 출력이 된다는 단점이 있었다. 프로그래머스에서 다른 분들이 작성한 답안을 참고하며, with문을 사용하여 코드를 작성하는게 가독성도 더 좋고 효율적인 거 같아보였다.

# 다른 분들의 답변을 참고해 다시 작성한 답안
## 직원별 2022년의 평가점수를 나타내는 쿼리작성
WITH SCORE_2022 AS (
	SELECT EMP_NO, SUM(SCORE) AS TOTAL_SCORE
    FROM HR_GRADE
    WHERE YEAR = '2022'
    GROUP BY EMP_NO
)

SELECT TOTAL_SCORE AS SCORE,
	   HE.EMP_NO,
       HE.EMP_NAME,
       HE.POSITION,
       HE.EMAIL
FROM HR_EMPLOYEES HE INNER JOIN SCORE_2022 USING(EMP_NO)
WHERE TOTAL_SCORE = (SELECT MAX(TOTAL_SCORE)
					 FROM SCORE_2022)  # 최고점의 평가점수를 받은 쿼리만 추출
                     
profile
미래의 독자인 나를 위해 글을 씁니다.

0개의 댓글