코딩테스트

[26.04.01 코테/회고(MySQL)]-조건에 맞는 사원 정보 조회하기

지니248 2026. 4. 1. 13:41

Lv2. 조건에 맞는 사원 정보 조회하기 (MySQL)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/284527

 

내가 작성한 코드

-- 사원별 2022년도 상, 하반기 점수의 합
WITH TOTAL_SCORE AS (
    SELECT SUM(HG.SCORE) AS SCORE,
           HE.EMP_NO,
           HE.EMP_NAME, 
           HE.POSITION, 
           HE.EMAIL
    FROM HR_EMPLOYEES HE
    JOIN HR_GRADE HG
      ON HE.EMP_NO = HG.EMP_NO
    WHERE HG.YEAR = 2022
    GROUP BY HE.EMP_NO, HE.EMP_NAME, HE.POSITION, HE.EMAIL
)
SELECT SCORE, EMP_NO, EMP_NAME, POSITION, EMAIL
FROM TOTAL_SCORE
ORDER BY SCORE DESC
LIMIT 1;

 

새로 배운 코드

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

 

문제 회고

1. USING의 사용

- 두 테이블을 조인했을 때 조인 기준이 되는 컬럼 이름이 EMP_NO로 동일했기에 ON HE.EMP_NO = HG.EMP_NO 대신

  더 간결한 USING 구문을 사용하였다

- 코드가 짧아져서 어떤 컬럼으로 연결되는지 한눈에 들어온다

- 하지만, USING은 반드시 두 테이블의 컬렴명이 같을 때만 사용 가능하다