링크
https://school.programmers.co.kr/learn/courses/30/lessons/133027
문제
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;
해설
- 유니온 사용의 경우 컬럼의 '형식'이 같으면 사용할 수 있다. 컬럼의 이름이 달라도 괜찮다.
새롭게 이해한 내용
컬럼이 같을 경우 유니온의 사용을 생각할 수 있다. 결과가 같지만, 유니온의 사용이 편할 때도 있다.
'[업무 지식] > MySQL' 카테고리의 다른 글
[조건과 서브쿼리] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2024.10.15 |
---|---|
[JOIN] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.10.14 |
[조건 서브쿼리] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.10.13 |
[HAVING] 우유와 요거트가 담긴 장바구니 (0) | 2024.10.13 |
[DATEDIFF] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2024.10.10 |