https://school.programmers.co.kr/learn/courses/30/lessons/133027
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🔍 문제
7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.



🎯정답
-- 내 풀이
WITH TOTAL_SALES AS (
WITH JULY_ORDER AS (
SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM JULY
GROUP BY FLAVOR
)
SELECT H.FLAVOR, H.TOTAL_ORDER + O.TOTAL_ORDER AS TOTAL_ORDER
FROM FIRST_HALF H JOIN JULY_ORDER O ON H.FLAVOR = O.FLAVOR
GROUP BY H.FLAVOR
ORDER BY TOTAL_ORDER DESC
LIMIT 3
)
SELECT FLAVOR
FROM TOTAL_SALES
-- GEMINI 풀이
SELECT H.FLAVOR
FROM FIRST_HALF H JOIN JULY J ON H.FLAVOR = J.FLAVOR
GROUP BY H.FLAVOR
ORDER BY SUM(H.TOTAL_ORDER) + SUM(J.TOTAL_ORDER) DESC
LIMIT 3;
❓풀이
- 내 풀이는 WITH 로 서브 테이블을 생성해서 푸는 방법이였는데, 너무나 간단한 풀이가 있었다.
- ORDER BY 절에서는 SELECT 절에 있는 별칭(ALIAS)이나 집계 함수를 사용한 계산식을 직접 사용해서 정렬할 수 있습니다.ORDER BY 절은 데이터베이스가 SELECT 절의 결과를 최종적으로 출력하기 전에 정렬하는 단계에서 작동합니다. 따라서 SELECT 절에서 계산된 값(SUM, COUNT, AVG 등)을 기준으로 정렬하는 것이 가능합니다.
- GROUP BY 단계에서 각 맛(FLAVOR)별로 모든 주문량의 합계가 계산됩니다.
- ORDER BY 단계에서 이 계산된 값(상반기 합계 + 7월 합계)을 기준으로 전체 결과를 내림차순으로 정렬합니다.
- 예를 들어, 방금 보셨던 쿼리에서 ORDER BY SUM(H.TOTAL_ORDER) + SUM(J.TOTAL_ORDER) DESC는 다음과 같은 원리로 작동합니다.
'프로그래밍 언어 > 02. SQL' 카테고리의 다른 글
| [SQL] 프로그래머스 LV.4 오프라인/온라인 판매 데이터 통합하기 (2) | 2025.08.26 |
|---|---|
| [SQL] 프로그래머스 LV.4 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2025.08.25 |
| [SQL] 프로그래머스 LV.4 서울에 위치한 식당 목록 출력하기 (1) | 2025.08.18 |
| [SQL] 프로그래머스 LV.3 년, 월, 성별 별 상품 구매 회원 수 구하기 (2) | 2025.08.17 |
| [SQL] 프로그래머스 LV.4 저자 별 카테고리 별 매출액 집계하기 (1) | 2025.08.17 |
