inblog logo
|
silver
    SQL문제풀기

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

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

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/131537?language=mysql

    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

    RSS·Powered by Inblog