Welcome to Subscribe On Youtube
1084. Sales Analysis III
Description
Table: Product
+--------------+---------+ | Column Name | Type | +--------------+---------+ | product_id | int | | product_name | varchar | | unit_price | int | +--------------+---------+ product_id is the primary key (column with unique values) of this table. Each row of this table indicates the name and the price of each product.
Table: Sales
+-------------+---------+ | Column Name | Type | +-------------+---------+ | seller_id | int | | product_id | int | | buyer_id | int | | sale_date | date | | quantity | int | | price | int | +-------------+---------+ This table can have duplicate rows. product_id is a foreign key (reference column) to the Product table. Each row of this table contains some information about one sale.
Write a solution to report the products that were only sold in the first quarter of 2019
. That is, between 2019-01-01
and 2019-03-31
inclusive.
Return the result table in any order.
The result format is in the following example.
Example 1:
Input: Product table: +------------+--------------+------------+ | product_id | product_name | unit_price | +------------+--------------+------------+ | 1 | S8 | 1000 | | 2 | G4 | 800 | | 3 | iPhone | 1400 | +------------+--------------+------------+ Sales table: +-----------+------------+----------+------------+----------+-------+ | seller_id | product_id | buyer_id | sale_date | quantity | price | +-----------+------------+----------+------------+----------+-------+ | 1 | 1 | 1 | 2019-01-21 | 2 | 2000 | | 1 | 2 | 2 | 2019-02-17 | 1 | 800 | | 2 | 2 | 3 | 2019-06-02 | 1 | 800 | | 3 | 3 | 4 | 2019-05-13 | 2 | 2800 | +-----------+------------+----------+------------+----------+-------+ Output: +-------------+--------------+ | product_id | product_name | +-------------+--------------+ | 1 | S8 | +-------------+--------------+ Explanation: The product with id 1 was only sold in the spring of 2019. The product with id 2 was sold in the spring of 2019 but was also sold after the spring of 2019. The product with id 3 was sold after spring 2019. We return only product 1 as it is the product that was only sold in the spring of 2019.
Solutions
-
# Write your MySQL query statement below select Product.product_id, product_name from Product left join Sales on Product.product_id = Sales.product_id group by product_id having min(sale_date) >= '2019-01-01' and max(sale_date) <= '2019-03-31'; -- ( SELECT DISTINCT s.product_id, p.product_name FROM Sales s LEFT JOIN Product p ON s.product_id = p.product_id WHERE s.sale_date >= '2019-01-01' AND s.sale_date <= '2019-03-31' ) EXCEPT -- MINUS if Oracle ( SELECT DISTINCT s.product_id, p.product_name FROM Sales s LEFT JOIN Product p ON s.product_id = p.product_id WHERE s.sale_date < '2019-01-01' OR s.sale_date > '2019-03-31' ) -- SELECT product_id, product_name FROM Sales JOIN Product USING (product_id) GROUP BY 1 HAVING COUNT(1) = SUM(sale_date BETWEEN '2019-01-01' AND '2019-03-31');