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은 반드시 두 테이블의 컬렴명이 같을 때만 사용 가능하다
'코딩테스트' 카테고리의 다른 글
| [26.04.03 코테/회고(MySQL/Oracle)]-가격대 별 상품 개수 구하기 (0) | 2026.04.03 |
|---|---|
| [26.04.02 코테/회고(MySQL/Oracle)]-조건에 부합하는 중고거래 상태 조회하기 (0) | 2026.04.02 |
| [26.03.31 코테/회고(MySQL)]-언어별 개발자 분류하기 (0) | 2026.03.31 |
| [26.03.30 코테/회고(MySQL/Oracle)]-저자 별 카테고리 별 매출액 집계하기 (0) | 2026.03.30 |
| [26.03.27 코테/회고(MySQL)]-부모의 형질을 모두 가지는 대장균 찾기 (0) | 2026.03.27 |