알고리즘

[SQL]LeetCode sales analysis III

truezero 2024. 1. 21. 19:23

✅ 코드

SELECT product_id
    , product_name
FROM Product
WHERE product_id NOT IN (
    SELECT product_id
    FROM Sales
    WHERE sale_date NOT BETWEEN '2019-01-01 00:00:00' AND '2019-03-31 23:59:59'
) AND product_id IN (SELECT DISTINCT product_id FROM Sales)

첫 번째 풀이입니다.

다중행 서브쿼리를 사용한 풀이입니다.

WHERE문에 조건을 2개 설정했는데 다소 복잡해보이는 감이 있습니다.

 

SELECT P.product_id AS product_id
    , P.product_name as product_name
FROM Product AS P
    INNER JOIN Sales AS S ON P.product_id = S.product_id
GROUP BY product_id
HAVING MIN(S.sale_date) >= '2019-01-01 00:00:00'
   AND MAX(S.sale_Date) <= '2019-03-31 23:59:59'

두 번째 풀이입니다.

GROUP BY와 HAVING문을 사용했습니다.

이전 풀이에 비해 가독성이 높아졌습니다.

HAVING문의 MIN/MAX 함수는 2019년 1분기에 구매한 품목들만 필터링하기 위해 사용했습니다.