본문 바로가기

Algorithm/Implementation

(SQL) - LeetCode (easy) 1327. List the Products Ordered in a Period

반응형

https://leetcode.com/problems/list-the-products-ordered-in-a-period/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

join, group by, 조건절을 사용해본 문제였습니다.

📕 풀이방법

📔 풀이과정

1. products와 orders를 product_id에 대해 join합니다.2. 이 중 2월에 주문된 product_name과 해당하는 unit의 합을 group 화해 합이 100이상인 row만 select해줍니다.* 2020년은 윤년이므로 2월 29일까지 있습니다.* MySQL, PostgreSQL의 경우 string형태의 날짜 비교가 가능하지만 Oracle은 TO_DATE로 문자열을 형변환해줘야 합니다.* PostgreSQL, Oracle의 경우 select에 선택한 column이 group by에 명시해줘야합니다.


📕 Code

📔 MySQL, PostgreSQL

select p.product_name, sum(o.unit) as unit from products p
join orders o on p.product_id = o.product_id
where o.order_date between '2020-02-01' and '2020-02-29'
group by p.product_id, p.product_name
having sum(o.unit) >= 100

📔 Oracle

SELECT p.product_name, SUM(o.unit) as unit
FROM products p
JOIN orders o ON p.product_id = o.product_id
WHERE o.order_date BETWEEN TO_DATE('2020-02-01', 'YYYY-MM-DD') AND TO_DATE('2020-02-29', 'YYYY-MM-DD')
GROUP BY p.product_id, p.product_name
HAVING SUM(o.unit) >= 100

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.