[SQL문제다시풀기] 오프라인/온라인 판매 데이터 통합하기 - union

silver's avatar
Feb 08, 2025
[SQL문제다시풀기] 오프라인/온라인 판매 데이터 통합하기 - union

문제

MYSQL

내가 작성한 정답

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

ORACLE

내가 작성한 정답

select to_char(sales_date,'yyyy-mm-dd') SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT from online_sale where to_char(sales_date,'yymm') = '2203' union select to_char(sales_date,'yyyy-mm-dd') sales_date, product_id, null as user_id, sales_amount from offline_sale where to_char(sales_date,'yymm') = '2203' order by sales_date asc, product_id asc, user_id asc
 
💡

union

:UNION은 두 개 이상의 SELECT 쿼리의 결과를 결합하여 하나의 결과 집합으로 만드는 데 사용
 
  1. 컬럼 수와 데이터 타입 : UNION을 사용하는 모든 SELECT 쿼리는 동일한 수의 컬럼을 반환해야 하며, 각 컬럼의 데이터 타입도 호환 가능해야 한다. 예를 들어, 첫 번째 쿼리의 첫 번째 컬럼이 정수형이라면, 두 번째 쿼리의 첫 번째 컬럼도 정수형이어야 한다.
  1. 중복 제거 : 기본적으로 UNION은 결과 집합에서 중복된 행을 제거한다. 만약 중복된 행을 포함하고 싶다면 UNION ALL을 사용할 수 있다. UNION ALL은 중복을 제거하지 않고 모든 결과를 반환한다.
  1. 정렬: ORDER BY 절은 UNION의 마지막 쿼리에서만 사용할 수 있다. 전체 결과 집합을 정렬하려면 ORDER BY를 마지막 쿼리에 추가해야 한다.
 
Share article

silver