728x90
문제
7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
Pseudo Code
- FIRST_HALF와 JULY 테이블에서 FLAVOR 컬럼을 기준으로 총 주문량을 알기 위해 중복이 되지 않도록 UNION ALL하여 새로운 테이블을 만든다.
- 1의 결과 SQL문으로 부터 FLAVOR별 주문량을 알아내기 위해 FLAVOR 컬럼을 그룹핑해준뒤 집계함수로 TOTAL_ORDER 계산한다.
- 총주문량이 많은 순서부터 뽑아내기 위해 TOTAL_ORDER 컬럼 기준 DESC
- 2의 결과 테이블로부터 ROWNUM이 1,2,3인 FLAVOR 값을 반환한다.
내코드
SELECT
FLAVOR
FROM (
SELECT
FLAVOR,
SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM (
SELECT
FLAVOR,
TOTAL_ORDER
FROM FIRST_HALF
UNION ALL
SELECT
FLAVOR,
TOTAL_ORDER
FROM JULY
)
GROUP BY FLAVOR
ORDER BY TOTAL_ORDER DESC
)
WHERE ROWNUM <= 3;
👉🏻 정렬된 쿼리 결과에 ROWNUM 을 매겨야 하기 때문에 FROM절 인라인뷰 서브쿼리를 정렬해준 후 메인쿼리에서 ROWNUM을 가져올 수 있었다.
728x90
반응형
'SQL > ORACLE.' 카테고리의 다른 글
[Oracle] 취소되지 않은 진료 예약 조회하기 (0) | 2023.04.25 |
---|---|
[Oracle] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.04.24 |
[Oracle] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.04.22 |
[Oracle] 자동차 대여 기록 별 대여 금액 구하기 (0) | 2023.04.16 |
[Oracle] 저자 별 카테고리 별 매출액 집계하기 (0) | 2023.04.15 |