1084. 销售分析III
题目
Table:Product
Column Name | Type |
---|---|
product_id | int |
product_name | varchar |
unit_price | int |
Product_id是该表的主键。 该表的每一行显示每个产品的名称和价格。 Table:Sales
Column Name | Type |
---|---|
seller_id | int |
product_id | int |
buyer_id | int |
sale_date | date |
quantity | int |
price | int |
这个表没有主键,它可以有重复的行。 product_id 是 Product 表的外键。 该表的每一行包含关于一个销售的一些信息。
编写一个SQL查询,报告2019年春季才售出的产品。即仅在2019-01-01至2019-03-31(含)之间出售的商品。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
输入: 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 |
输出:
product_id | product_name |
---|---|
1 | S8 |
解释: id为1的产品仅在2019年春季销售。 id为2的产品在2019年春季销售,但也在2019年春季之后销售。 id 3的产品在2019年春季之后销售。 我们只退回产品1,因为它是2019年春季才销售的产品。
题解
sql
SELECT `p`.`product_id`, `p`.`product_name`
FROM `Product` `p`
INNER JOIN `Sales` `s` ON `p`.`product_id` = `s`.`product_id`
GROUP BY `p`.`product_id`, `p`.`product_name`
HAVING COUNT(1) = SUM(`s`.`sale_date` >= '2019-01-01' AND `s`.`sale_date` <= '2019-03-31')
1
2
3
4
5
2
3
4
5