改题目来源于力扣:
题目要求:
表: Product
+--------------+---------+
| Column Name | Type |
+--------------+---------+
| product_id | int |
| product_name | varchar |
| unit_price | int |
+--------------+---------+
product_id 是该表的主键(具有唯一值的列)。
该表的每一行显示每个产品的名称和价格。
表:Sales
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| seller_id | int |
| product_id | int |
| buyer_id | int |
| sale_date | date |
| quantity | int |
| price | int |
+------ ------+---------+
这个表可能有重复的行。
product_id 是 Product 表的外键(reference 列)。
该表的每一行包含关于一个销售的一些信息。
编写解决方案,报告 2019年春季 才售出的产品。即 仅 在 2019-01-01 (含)至 2019-03-31 (含)之间出售的商品。
思路流程:
难点在于如何筛选日期,我们在将两个表连接并且分组后,在having代码段里,可以用max(日期)<=限定时间,min(日期)>=限定时间,即可筛选出我们想要的日期时段
代码实现:
# Write your MySQL query statement below
select S.product_id,P.product_name
FROM Product P right join Sales S
on S.product_id=P.product_id
group by product_id
having max(sale_date) <= '2019-03-31' and min(sale_date) >= '2019-01-01'