-
SQL - UNIONSQL 정리 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