본문 바로가기
Programming/LeetCode

[LeetCode] Sales Analysis III (최소 최대 GROUP BY MINMAX 활용)

by 데이터현 2022. 4. 5.

https://leetcode.com/problems/sales-analysis-iii/

그렇게 어려운 문제는 아니지만 여러 풀이 방법이 있었다.

 

처음 생각한 단순한 풀이

SELECT product_id, product_name
FROM Product
WHERE product_id IN(
    SELECT product_id FROM Sales
    WHERE sale_date BETWEEN '2019-01-01' AND '2019-03-31'
)
AND product_id NOT IN(
    SELECT product_id FROM Sales
    WHERE sale_date NOT BETWEEN '2019-01-01' AND '2019-03-31'
)
;

딱 봐도 뭔가 비효율적이다.

 

GROUP BY + HAVING 

SELECT p.product_id, p.product_name
FROM Product p, Sales s
WHERE p.product_id = s.product_id
GROUP BY s.product_id
HAVING MIN(s.sale_date) >= '2019-01-01' AND MAX(s.sale_date) <= '2019-03-31'
;

 

지금까지 SQL 쿼리 공부하면서 느낀 건데,

1. 풀이가 참 다양하다.

2. 속도 이슈를 계속 생각해야 된다.

3. 두 개 테이블을 합칠 때 JOIN, 서브 쿼리, WHERE 구문, SELECT에서 처리하기

정도가 있다.

댓글