반응형

출저 : 프로그래머스

 

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 함수를 사용해봤는데 쿼리가 보기 편해졌다.. 자주 활용할 수 있도록 숙련해야겠다

반응형

+ Recent posts

// 기업0 D-Day (표지) // 기업2 D-Day