[업무 지식]/MySQL
[JOIN & UNION] 주문량이 많은 아이스크림들 조회하기
에디터 윤슬
2024. 10. 14. 09:34
링크
https://school.programmers.co.kr/learn/courses/30/lessons/133027
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
정답
select a.flavor
from first_half a
join july b
on a.flavor = b.flavor
group by a.flavor
order by sum(a.total_order + b.total_order) desc
limit 3
정답
JOIN
select flavor
from (
select a.flavor,
first_half_sum + july_sum as total_sum
from (
select flavor,
sum(total_order) as first_half_sum
from first_half
group by flavor
) a
left join (
select flavor,
sum(total_order) as july_sum
from july
group by flavor
) b
on a.flavor = b.flavor
order by 2 desc
) c
limit 3
UNION
SELECT
FLAVOR,
SUM(TOTAL_ORDER) AS TOTAL_SUM
FROM (
SELECT FLAVOR, TOTAL_ORDER FROM FIRST_HALF
UNION ALL
SELECT FLAVOR, TOTAL_ORDER FROM JULY
) AS COMBINED
GROUP BY
FLAVOR
ORDER BY
TOTAL_SUM DESC
LIMIT 3;
해설
- 유니온 사용의 경우 컬럼의 '형식'이 같으면 사용할 수 있다. 컬럼의 이름이 달라도 괜찮다.
새롭게 이해한 내용
컬럼이 같을 경우 유니온의 사용을 생각할 수 있다. 결과가 같지만, 유니온의 사용이 편할 때도 있다.