SQL-每日一题【1084. 销售分析III】

题目

Table: Product

SQL-每日一题【1084. 销售分析III】_第1张图片

Table: Sales

SQL-每日一题【1084. 销售分析III】_第2张图片 

编写一个SQL查询,报告2019年春季才售出的产品。即仅在2019-01-01至2019-03-31(含)之间出售的商品。

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

SQL-每日一题【1084. 销售分析III】_第3张图片

SQL-每日一题【1084. 销售分析III】_第4张图片 

 

解题思路

前置知识

between and

between  的英语意思是介于两者之间,在sql中的意思是两个值之间的数据范围。这些值可以是数值、文本或者日期。与and 一起使用

例句1:(筛选出一张表中以某个字段两个值之间的数据范围)

select * from tab1    where name      between value1 and value2

 (筛选出的条件中包括value1,但是不包括vaule2,也就是说并不是包括两个边界值,(sql server))

例句2:(筛选出一张表中以某个字段两个值之间的除外的数据范围,在条件中加not)

select * from tab1    where name    not  between value1 and value2

知道了between 的用法后,我们一起来看一下这道题

1.题目要求我们查询出2019年春季才售出的产品,也就是在2019-01-01至2019-03-31(含)之间出售的商品。我们可以对 product 和 sales 表进行左连接后,再用一个子查询解决这个问题。

2.首先我们对 product 表和 sales 表进行左连接,连接条件为 p.product_id = s.product_id 。

3.之后利用子查询筛选出日期在 2019-01-01 至 2019-03-31 的记录,返回筛选出的product_id 和 product_name即可。

代码实现

select distinct p.product_id, p.product_name
from product as p left join sales as s
on p.product_id = s.product_id
where s.product_id not in (select product_id from sales where sale_date not between '2019-01-01' and '2019-03-31')

测试结果

SQL-每日一题【1084. 销售分析III】_第5张图片

 

你可能感兴趣的:(SQL每日一题,sql,数据库)