SQL GROUP BY , COALESCE

·2024년 2월 1일

1. GROUP BY

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의 조건을 처리할 때 사용한다는 특징이 있다.

2. COALESCE(attribute명 , 0)

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;
profile
DevOps를 기반으로 한 클라우드, 알고리즘, 백엔드 관심있는 컴공생

0개의 댓글