2 정답
USE mywork;
SELECT CASE WHEN ranks BETWEEN 1 AND 10 THEN '상위10'
ELSE '나머지'
END 순위별, SUM(sale_amt)
FROM box_office
WHERE YEAR(release_date) = 2019
GROUP BY 1;
실행결과
해설 먼저 2019년 개봉 영화를 조회하기 위해 WHERE 절에 YEAR() 함수의 매개변수로 개봉일 칼럼인 release_date를 사용한 조건을 넣습니다. 그리고 1~10위 영화와 나머지 영화는 ranks 칼럼 값으로 구분하면 되는데, 이때 CASE 연산자를 사용합니다. ranks 값이 1에서 10 사이에 있으면 ‘상위10’, 그 외는 ELSE 절에서 ‘나머지’를 반환하게 합니다. 또한 CASE 연산자 자체를 GROUP BY 절에 기술해야 하는데, CASE 연산자를 직접 기술해도 되고, 별칭인 ‘순위별’을 기술해도 됩니다. 여기에서는 순번인 1을 명시했습니다. 1은 SELECT 절에서 첫 번째 표현식인 CASE 연산자 부분을 의미합니다. 이처럼 GROUP BY 절에는 표현식의 순번도 명시할 수 있습니다.