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