SQL: COALESCE 사용예시, NULLIF과 IFNULL의 차이점

2024. 9. 30. 22:54전처리/SQL

 

01 COALESCE


SELECT COALESCE(NULL, NULL, 'Hello', 'World') AS result;
-- 결과: 'Hello'

1. COALESCE 함수는 인자로 받은 여러 값들 중에서 첫 번째로 NULL이 아닌 값을 반환한다.

2. 여러 개의 인자를 받을 수 있다.

 

02 NULLIF, IFNULL


SELECT NULLIF(10, 10) AS result1, NULLIF(10, 20) AS result2;
-- 결과: result1은 NULL, result2는 10

1. NULLIF 함수는 두 인자가 같으면 NULL을 반환하고, 그렇지 않으면 첫 번째 인자를 반환한다.

2. 주로 특정 조건에서 값을 NULL로 만들고 싶을 때 사용한다.

 

SELECT IFNULL(NULL, 'Default Value') AS result1, IFNULL('Hello', 'Default Value') AS result2;
-- 결과: result1은 'Default Value', result2는 'Hello'

1. IFNULL 함수는 두 개의 인자를 받아 첫 번째 인자가 NULL이면 두 번째 인자를 반환한다.

2. 그렇지 않으면 첫 번째 인자를 반환한다.

 

03 차이점 요약


1. NULLIF: 두 인자가 같으면 NULL을 반환하고, 다르면 첫 번째 인자를 반환.

2. IFNULL: 첫 번째 인자가 NULL이면 두 번째 인자를 반환하고, 그렇지 않으면 첫 번째 인자를 반환.

 

04 시작 기간과 종료 기간이 주어졌을 때 특정 구매일 대치하기


문제URL: Average Selling Price

더보기
-- 전체 코드
SELECT
    US.product_id, 
    ROUND(
        SUM(US.units * PR.price) / SUM(US.units), 
        2
    ) AS average_price
FROM 
    UnitsSold AS US
LEFT JOIN 
    Prices AS PR 
ON 
    US.product_id = PR.product_id
    AND US.purchase_date BETWEEN PR.start_date AND PR.end_date
GROUP BY 
    US.product_id;
AND US.purchase_date BETWEEN PR.start_date AND PR.end_date

1. JOIN 조건에 AND로 해당 구문을 추가해서 구매일에 해당하는 가격을 매치했다.

2. LEFT JOIN 했을 때 왼쪽 테이블을 기준으로 NULL값이 정해짐을 이용했다.

3. 두 번째 테이블을 기준으로 LEFT JOIN해서 NULL값을 출력시키지 않았다.