728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131537
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[ 정답 - UNION ]
SELECT DATE_FORMAT(SALES_DATE,"%Y-%m-%d") SALES_DATE
, PRODUCT_ID
, USER_ID
, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
UNION
SELECT DATE_FORMAT(SALES_DATE,"%Y-%m-%d") SALES_DATE
, PRODUCT_ID
, NULL AS USER_ID
, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY SALES_DATE
, PRODUCT_ID
, USER_ID
UNION / UNION ALL
UNION - 중복제외 조회
UNION ALL - 중복 포함 조회
[ 오답처리 - LEFT OUTER JOIN ]
SELECT DATE_FORMAT(ONS.SALES_DATE, '%Y-%m-%d') AS SALES_DATE
, ONS.PRODUCT_ID
, ONS.USER_ID
, ONS.SALES_AMOUNT
FROM ONLINE_SALE ONS
LEFT OUTER JOIN OFFLINE_SALE OFFS
ON ONS.PRODUCT_ID = OFFS.PRODUCT_ID
WHERE ONS.SALES_DATE LIKE '2022-03%'
GROUP BY PRODUCT_ID
ORDER BY ONS.SALES_DATE
,ONS.PRODUCT_ID
,ONS.USER_ID
# UNION 을 사용하는 경우와 JOIN 을 사용하는 경우
둘 다 조회되는 결과는 같다.
하지만 LEFT JOIN 을 사용하면 오답처리가 된다.
해당 문제가 테이블 '통합' 하는것에 개념을 두었기에 오답처리가 되는 것일까..?!
728x90
'코테연습 > 프로그래머스' 카테고리의 다른 글
코딩테스트 연습 > SELECT > 서울에 위치한 식당 목록 출력하기 (0) | 2024.01.26 |
---|---|
코딩테스트 연습 > SELECT > 조건에 부합하는 중고거래 댓글 조회하기 MySQL (0) | 2024.01.26 |
코딩 기초 트레이닝 > 전국 대회 선발 고사 (0) | 2024.01.08 |
코딩 기초 트레이닝 > 문자열 묶기 Java #getOrDefault() (0) | 2023.11.20 |
⭐ 코딩 기초 트레이닝 > 무작위로 K개의 수 뽑기 Java (0) | 2023.11.20 |