본문 바로가기
「SQL초급떼기

[프로그래머스고득점kit]코딩테스트 연습JOIN주문량이 많은 아이스크림들 조회하기(level 4)

by DayGo 2023. 3. 31.

https://school.programmers.co.kr/learn/courses/30/lessons/133027

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

■ 1번째 방법 : union all + with문 사용하기 , but flavor 키값을 활용한 join을 사용하지 않음

 

-- 코드를 입력하세요
-- FIRST_HALF 테이블 : 아이스크림 가게의 상반기 주문 정보 , FLAVOR
-- JULY 테이블 :  7월의 아이스크림 주문 정보, SHIPMENT_ID
-- 7월 아이스크림 총 주문량과 
-- 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
-- with 문 사용해보자!! union all
with sum_total as

(SELECT FLAVOR,sum(total_order) as total_order
from FIRST_HALF 
group by FLAVOR
union all 
SELECT FLAVOR,sum(total_order) as total_order
from JULY
group by FLAVOR)

SELECT FLAVOR,sum(total_order) as total_order
from sum_total 
group by FLAVOR
order by total_order desc
limit 3

 

그러나!! 이것은 나의 오답이었다!!!왜 틀렸지.ㅠㅠㅠㅠ

 

 

■ 다른분 정답 보기

 

WITH A AS 

(SELECT *
FROM JULY
UNION ALL
SELECT *
FROM FIRST_HALF
)

SELECT FLAVOR 

FROM A 

GROUP BY FLAVOR 

ORDER BY SUM(TOTAL_ORDER) DESC 

LIMIT 3

헉!! 실수!!!!

 

마지막 select에서 flavor 맛만 한컬럼만 추출해야하는데!!!!! sum값까지 추출해서였군!!이런 단순실수를 절대 nono!!!

또한가지 주의점!!

order by total_order desc  여기서 total_order 는 july와 half의 값을 합쳐서 해줘야함!!!!!

이거 안하면 답이 다름!!!

 

with sum_total as

(SELECT FLAVOR,sum(total_order) as total_order
from FIRST_HALF 
group by FLAVOR
union all 
SELECT FLAVOR,sum(total_order) as total_order
from JULY
group by FLAVOR)

SELECT FLAVOR
from sum_total 
group by FLAVOR
order by sum(total_order) desc
limit 3

 

 

 

 

order by 문에 alias는 먹히지 않는다.

댓글