ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - UNION
    SQL 정리 2024. 4. 23. 16:56

    코딩테스트 연습 - 오프라인/온라인 판매 데이터 통합하기 | 프로그래머스 스쿨 (programmers.co.kr)

    -- 코드를 입력하세요
    # SELECT o.sales_date,  o.sales_amount, off.sales_date, off.sales_amount, product_id, user_id
    # from online_sale o left join offline_sale off using(product_id)
    
    # 답
    SELECT sales_date, product_id, user_id, sales_amount
    FROM online_sale o
    where sales_date >= '2022-03-01'  and sales_date <= '2022-03-31'
    UNION
    SELECT sales_date, product_id, "NULL", sales_amount 
    FROM offline_sale off
    where sales_date >= '2022-03-01'  and sales_date <= '2022-03-31'
    order by sales_date asc, product_id asc, user_id asc

    1. 전제로 주어진 '동일 일자, 상품 별 겹친 데이터는 없다'

    2. 일반적인 join으로는 날짜, 상품번호를 공통 키로 지정해도 내용이 중복된다.

       2-1 : join 으로 키를 2개 이상 지정하는 것이 가능한가? = 가능하다

    3. sum으로 on/offline sales를 합하는게 가능할지 생각만 하고 안했다. 

      3-1 : 단순 연산, group by sum으로 합한다면 중복 컬럼이 영향을 미칠 것이라 예상된다.

     

     

     

     

     

    참고

    union 사용 간 순서도 및 group by / order by / where 적용 구분

    더보기

     

     

    보통의 예외 : subquery, with(CTE), 다중컬럼정렬 

     

    '다중컬럼정렬' , 이번 해답의 조건중 하나이다.

    SELECT column1, column2 FROM table1
    UNION
    SELECT column1, column2 FROM table2
    ORDER BY column1, column2;

    "위의 예시에서는 column1을 기준으로 먼저 정렬하고, 그 다음에는 column2를 기준으로 정렬합니다." -GPT

     

     

    'SQL 정리' 카테고리의 다른 글

    SQL - Recursive CTE  (3) 2024.04.24
    SQL - group by 연산자  (0) 2024.04.22
    SQL - ' ' / " " / ` `  (0) 2024.04.18
    SQL - With - CTE  (0) 2024.04.18
    SQL - field vs column  (0) 2024.04.09
Designed by Tistory.