-
leetcode - 1511. Customer Order FrequencySQL 문제풀이 2022. 7. 12. 23:38
난이도 : Easy
Table: Customers
+---------------+---------+ | Column Name | Type | +---------------+---------+ | customer_id | int | | name | varchar | | country | varchar | +---------------+---------+ customer_id is the primary key for this table. This table contains information about the customers in the company.
Table: Product
+---------------+---------+ | Column Name | Type | +---------------+---------+ | product_id | int | | description | varchar | | price | int | +---------------+---------+ product_id is the primary key for this table. This table contains information on the products in the company. price is the product cost.
Table: Orders
+---------------+---------+ | Column Name | Type | +---------------+---------+ | order_id | int | | customer_id | int | | product_id | int | | order_date | date | | quantity | int | +---------------+---------+ order_id is the primary key for this table. This table contains information on customer orders. customer_id is the id of the customer who bought "quantity" products with id "product_id". Order_date is the date in format ('YYYY-MM-DD') when the order was shipped.
Write an SQL query to report the customer_id and customer_name of customers who have spent at least $100 in each month of June and July 2020.
Return the result table in any order.
The query result format is in the following example.
Example 1:
Input: Customers table: +--------------+-----------+-------------+ | customer_id | name | country | +--------------+-----------+-------------+ | 1 | Winston | USA | | 2 | Jonathan | Peru | | 3 | Moustafa | Egypt | +--------------+-----------+-------------+ Product table: +--------------+-------------+-------------+ | product_id | description | price | +--------------+-------------+-------------+ | 10 | LC Phone | 300 | | 20 | LC T-Shirt | 10 | | 30 | LC Book | 45 | | 40 | LC Keychain | 2 | +--------------+-------------+-------------+ Orders table: +--------------+-------------+-------------+-------------+-----------+ | order_id | customer_id | product_id | order_date | quantity | +--------------+-------------+-------------+-------------+-----------+ | 1 | 1 | 10 | 2020-06-10 | 1 | | 2 | 1 | 20 | 2020-07-01 | 1 | | 3 | 1 | 30 | 2020-07-08 | 2 | | 4 | 2 | 10 | 2020-06-15 | 2 | | 5 | 2 | 40 | 2020-07-01 | 10 | | 6 | 3 | 20 | 2020-06-24 | 2 | | 7 | 3 | 30 | 2020-06-25 | 2 | | 9 | 3 | 30 | 2020-05-08 | 3 | +--------------+-------------+-------------+-------------+-----------+ Output: +--------------+------------+ | customer_id | name | +--------------+------------+ | 1 | Winston | +--------------+------------+ Explanation: Winston spent $300 (300 * 1) in June and $100 ( 10 * 1 + 45 * 2) in July 2020. Jonathan spent $600 (300 * 2) in June and $20 ( 2 * 10) in July 2020. Moustafa spent $110 (10 * 2 + 45 * 2) in June and $0 in July 2020.
WITH jun AS ( SELECT c.customer_id , c.name , SUM(price * quantity) jun_price FROM Customers c LEFT JOIN Orders o ON c.customer_id = o.customer_id LEFT JOIN Product p ON o.product_id = p.product_id WHERE order_date BETWEEN '2020-06-01' AND '2020-06-30' GROUP BY customer_id HAVING jun_price >= 100 ) ,jul AS ( SELECT c.customer_id , c.name , SUM(price * quantity) jul_price FROM Customers c LEFT JOIN Orders o ON c.customer_id = o.customer_id LEFT JOIN Product p ON o.product_id = p.product_id WHERE order_date BETWEEN '2020-07-01' AND '2020-07-31' GROUP BY customer_id HAVING jul_price >= 100 ) SELECT jun.customer_id , jun.name FROM jun JOIN jul ON jun.customer_id = jul.customer_id AND jun.name = jul.name
Accepted (13.25%)
SELECT customer_id , name FROM Customers JOIN Orders USING(customer_id) JOIN Product USING(product_id) GROUP BY customer_id HAVING SUM(IF(LEFT(order_date, 7) = '2020-06', quantity, 0) * price) >= 100 AND SUM(IF(LEFT(order_date, 7) = '2020-07', quantity, 0) * price) >= 100
Accepted (28.07%)
'SQL 문제풀이' 카테고리의 다른 글
leetcode - 1098. Unpopular Books (0) 2022.07.13 leetcode - 1077. Project Employees III (0) 2022.07.13 leetcode - 1495. Friendly Movies Streamed Last Month (0) 2022.07.12 leetcode - 1484. Group Sold Products By The Date (0) 2022.07.12 leetcode - 1070. Product Sales Analysis III (0) 2022.07.11