GROUP BY
문제풀이
A. WITH + CASE 사용
WITH TT AS
( SELECT EMP_NO, CASE
WHEN AVG(SCORE) >= 96 THEN 'S'
WHEN AVG(SCORE) >= 90 THEN 'A'
WHEN AVG(SCORE) >= 80 THEN 'B'
ELSE 'C' END AS GRADE FROM HR_GRADE
GROUP BY EMP_NO, YEAR)
※ 'TT' 는 테이블명
<SELECT * FROM TT 출력 시 >
최종답 :
WITH TT AS
( SELECT EMP_NO, CASE
WHEN AVG(SCORE) >= 96 THEN 'S'
WHEN AVG(SCORE) >= 90 THEN 'A'
WHEN AVG(SCORE) >= 80 THEN 'B'
ELSE 'C' END AS GRADE FROM HR_GRADE
GROUP BY EMP_NO, YEAR)
SELECT A.EMP_NO, A.EMP_NAME, TT.GRADE, CASE
WHEN GRADE = 'S' THEN A.SAL*0.2
WHEN GRADE = 'A' THEN A.SAL*0.15
WHEN GRADE = 'B' THEN A.SAL*0.1
ELSE 0 END AS BONUS FROM HR_EMPLOYEES AS A
LEFT JOIN TT ON A.EMP_NO = TT.EMP_NO
ORDER BY EMP_NO
→ WITH를 사용하여 테이블 하나 생성, 테이블 2개를 이용하여 결과 출력
with 함수를 사용해봤는데 쿼리가 보기 편해졌다.. 자주 활용할 수 있도록 숙련해야겠다
'필기ㆍ코테 공부 > SQL' 카테고리의 다른 글
[프로그래머스/MYSQL] 카테고리 별 상품 개수 구하기 (1) | 2025.01.05 |
---|---|
[프로그래머스/MYSQL] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2025.01.02 |
[프로그래머스/MYSQL] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2025.01.02 |
[프로그래머스/MYSQL] 잡은 물고기의 평균 길이 구하기 (1) | 2024.12.29 |
[프로그래머스/MYSQL] NULL 처리하기 (0) | 2024.12.29 |