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

쥬쥬스·2023년 8월 23일
0

SQL

목록 보기
45/67
post-thumbnail

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


문제는 간단한데 추가내용이 많아서 캡쳐본 첨부


💡 조건

  • 총 주문량을 더한 값이 큰 순서대로
  • 3개의 맛 조회

sql 코드

SELECT f.flavor
FROM first_half f join july j on f.flavor = j.flavor
GROUP BY f.flavor
ORDER BY sum(f.total_order+j.total_order) desc limit 3

이 문제를 풀면서 혼동했던게 두가지였다.

첫번째는 join시 어떤 값을 기준으로 합칠 것인가였다.

FIRST_HALF테이블의 SHIPMENT_IDJULY테이블의 SHIPMENT_ID의 외래 키입니다.JULY테이블의 FLAVORFIRST_HALF 테이블의 FLAVOR의 외래 키입니다. 7월에는 아이스크림 주문량이 많아 같은 아이스크림에 대하여 서로 다른 두 공장에서 아이스크림 가게로 출하를 진행하는 경우가 있습니다. 이 경우 같은 맛의 아이스크림이라도 다른 출하 번호를 갖게 됩니다.

문제에서 이렇게 제시해줬는데 제대로 이해를 못해서 단순히 SHIPMENT_ID가 외래키니까 그걸로 합쳐야겠다고 생각해서 문제를 풀었다. 문제를 다시 잘 읽어보면 1. 같은 맛의 아이스크림이라도 다른 출하번호 갖게 됨 2. JULY테이블에서는 FLAVORFIRST_HALF테이블의 외래키 두가지 조건을 보게 된다. 그렇다면 나는 FIRST_HALF를 기준으로 join하려면 FLAVOR가 기준이 되어야한다.

두번째는 order by에서 sum을 하는게 까다롭게 여겨졌다.
처음에는 group by를 묶어서 having을 사용했는데 그렇게 되면 select에서 출력해줄때 영향력이 있는데 지금은 맛만 조회하므로 의미가 없다. 따라서 order by에서 각각의 테이블의 판매량을 더한 값에서 맛으로 그룹화 했으니 그것별로 sum을 해주면 되는 거였다. 가장 많이 팔린 순으로 3가지이므로 내림차순 정렬하고, limit을 걸어주면 된다.

가벼운 문제 같으면서 생각해야하는 문제였다. 맨날 대충 보고 해결하려고 하는 마음이 있는데 그런 마음을 버리고 요구하는 조건을 잘 살펴보자.

profile
느려도... 꾸준히.....🐌

0개의 댓글