[프로그래머스] 오프라인/온라인 판매 데이터 통합하기

yenpkr·2025년 3월 13일
0

sql

목록 보기
58/91

문제

제출

SELECT date_format(sales_date,'%Y-%m-%d') SALES_DATE,product_id,user_id,sales_amount
from online_sale
where MONTH(sales_date)=3
union
SELECT date_format(sales_date,'%Y-%m-%d') SALES_DATE,product_id,null,sales_amount
from offline_sale
where MONTH(sales_date)=3
order by 1 asc,2 asc,3 asc

📌 새로 배운 내용

✅ UNION, UNION ALL

두 개 이상의 쿼리 결과를 하나로 합칠 때 사용하는 명령어
중복을 제거하는지 여부에서 차이점

연산자중복 제거속도사용 예시
UNION중복 제거 O느림중복된 데이터를 제외하고 결과를 합칠 때
UNION ALL중복 제거 X빠름중복을 포함한 전체 데이터를 합칠 때
# UNION
-- 중복 제거 (느림)
SELECT column FROM Table1
UNION
SELECT column FROM Table2;

# UNION ALL
-- 중복 포함 (빠름)
SELECT column FROM Table1
UNION ALL
SELECT column FROM Table2;

또 다른 답

select *
from (
    SELECT date_format(sales_date,'%Y-%m-%d') SALES_DATE,product_id,user_id,sales_amount
    from online_sale
    union all
    SELECT date_format(sales_date,'%Y-%m-%d') SALES_DATE,product_id,null,sales_amount
    from offline_sale) AS combined_sales
where MONTH(sales_date)=3
order by 1 asc,2 asc,3 asc

UNION ALL 사용했다.

0개의 댓글