본문 바로가기

SQL/ORACLE.

[Oracle] 주문량이 많은 아이스크림들 조회하기

728x90

문제

7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.

 

 

Pseudo Code

  1. FIRST_HALF와 JULY 테이블에서 FLAVOR 컬럼을 기준으로 총 주문량을 알기 위해 중복이 되지 않도록 UNION ALL하여 새로운 테이블을 만든다.
  2. 1의 결과 SQL문으로 부터 FLAVOR별 주문량을 알아내기 위해 FLAVOR 컬럼을 그룹핑해준뒤 집계함수로 TOTAL_ORDER 계산한다.
  3. 총주문량이 많은 순서부터 뽑아내기 위해 TOTAL_ORDER 컬럼 기준 DESC
  4. 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
반응형