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에서 처리하기
정도가 있다.
'Programming > LeetCode' 카테고리의 다른 글
[LeetCode] Diameter of Binary Tree (이진트리 가장 긴 경로) (0) | 2022.04.08 |
---|---|
[LeetCode] Maximum Depth of Binary Tree (이진트리 최대 깊이 구하기) (0) | 2022.04.08 |
[LeetCode] Swapping Nodes in a Linked List (0) | 2022.04.04 |
[LeetCode] Longest Substring Without Repeating Characters (0) | 2022.04.03 |
[LeetCode] Tree Node (0) | 2022.04.03 |
댓글