SELECT USER_ID , PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID , PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
GROUP BY란
GROUP BY USER_ID , PRODUCT_ID
라면 USER_ID 값으로 묶은 데이터 그룹을 다시 PRODUCT_ID 값으로 묶는 것.
GROUP BY는 HAVING 절이랑 같이 사용한다.
HAVING은 WHERE과 비슷한데, GROUP BY의 조건을 처리할 때 사용한다는 특징이 있다.
COALESCE(attribute명 , 0) 은 해당 attribute값이 NULL이 아니면 그 값을 반환하고 NULL아면 NULL로 표시해주는 함수이다.
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
WHERE YEAR(SALES_DATE)=2022 AND MONTH(SALES_DATE)=3
UNION ALL
SELECT SALES_DATE , PRODUCT_ID , NULL AS USER_ID , SALES_AMOUNT
FROM OFFLINE_SALE
WHERE YEAR(SALES_DATE)=2022 AND MONTH(SALES_DATE)=3)
AS MERGED_SALES
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, COALESCE(USER_ID,0) ASC;