반응형
반응형

출저 : 프로그래머스

 

 

String, Date

문제풀이

 

A1. UNION ALL 사용

SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
PRODUCT_ID, USER_ID, SALES_AMOUNT 
FROM (SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT 
             FROM ONLINE_SALE 
             UNION ALL
             SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT 
             FROM OFFLINE_SALE
             ) AS A
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID

 

 UNION : 중복제거 + 테이블 세로로 결합(위+ 아래)
 UNION ALL : 중복제거X + 테이블 세로로 결합(위+ 아래)


 

 

문제에 있는거 그대로 따라갔다. ONLINE_SALE에서 필요한거 그대로 가져오고, OFFLINE_SALE테이블에서 필요한거 그대로 가져오고 결합 (UNION은 위아래로 단순하게 붙이는 것이기 때문에 컬럼만 맞으면 나중에 지장은 없다)

OFFLINE_SALE 에서 USER_ID는 NULL로 하라고했기에 NULL을 중간에 넣어줬다

 

 

단순하게 붙이면 이런 결과가 나오고 이 테이블을 가지고 다시 조건출력하면 끝

 

최종쿼리

 

 

A2. WITH 사용

중간에 결합된 테이블을 바로가져왔지만 WITH 함수를 이용하여 테이블 지정후 작성해도 풀 수 있다

반응형
반응형

출저 : 프로그래머스

JOIN

문제풀이

 

A. UNION/ UNION ALL 사용

SELECT A.FLAVOR FROM
(SELECT * FROM FIRST_HALF
UNION 
SELECT * FROM JULY) AS A
GROUP BY FLAVOR
ORDER BY SUM(A.TOTAL_ORDER) DESC LIMIT 3

 

 UNION : 중복제거 + 테이블 세로로 결합(위+ 아래)
 UNION ALL : 중복제거X + 테이블 세로로 결합(위+ 아래)

 

 

 

UNION(ALL)을 사용하니 문제정답률에 비해 난이도가 쉬웠다고 생각한(?) 문제.

두 테이블 구성이 같고, 데이터도 상반기/7월로 나눠져있어 합쳐도 무방하다고 생각했음.

실제로 결합 후 1~7월 합계테이블이 완성되어 조건에 맞는 쿼리 작성 하면 끝

 

반응형

+ Recent posts

// 기업0 D-Day (표지) // 기업1 D-Day