erDiagram
Products {
int product_id PK
varchar product_name
int unit_price
}
Sales {
int seller_id
int product_id FK
int buyer_id
date sale_date
int quantity
int price
}
Products ||--o{ Sales : has
목표
2019 1분기에만 팔린 제품 구하기
문제 풀이
MySQL
-- Solution 1
SELECT P.PRODUCT_ID, P.PRODUCT_NAME
FROM PRODUCT AS P
JOIN (
SELECT PRODUCT_ID, MIN(SALE_DATE) AS MIN_DATE, MAX(SALE_DATE) AS MAX_DATE
FROM SALES
GROUP BY PRODUCT_ID) AS T
ON P.PRODUCT_ID = T.PRODUCT_ID
WHERE T.MIN_DATE >= '2019-01-01' AND T.MAX_DATE <= '2019-03-31';
# Solution 2
WITH Q1 AS (
SELECT PRODUCT_ID
FROM SALES
GROUP BY PRODUCT_ID
HAVING MIN(SALE_DATE) >= '2019-01-01' AND MAX(SALE_DATE) <= '2019-03-31'
)
SELECT PRODUCT_ID, PRODUCT_NAME
FROM PRODUCT
WHERE PRODUCT_ID IN (SELECT PRODUCT_ID FROM Q1)
댓글