LeetCode-1083/1084 销售分析 II/III(简单)

标题1083. 销售分析II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sales-analysis-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

本人思路:
– 1、‘购买了 S8 手机却没有购买 iPhone 的买家’,主要是对这个条件的理解,可以使用分组后求和,即买了s8的话sum(p.product_name = ‘S8’)>=1,没买iphone的话sum(p.product_name = ‘iPhone’)=0

select s.buyer_id
from Sales as s inner join Product as p 
on s.product_id = p.product_id
group by s.buyer_id
having sum(p.product_name = 'S8')>=1 and sum(p.product_name = 'iPhone')=0

标题1084. 销售分析III

在这里插入图片描述
在这里插入图片描述
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sales-analysis-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
本人思路:

方法一
1、‘仅在2019-01-01至2019-03-31(含)之间出售的商品。’,即该商品只在这个时间区间出售了,不在其他时间出售过。受上一题思路影响,写的有点傻,附上简单写法~

select s.product_id as product_id, p.product_name
from Sales as s inner join Product as p 
on s.product_id = p.product_id
group by s.product_id ,p.product_name
having sum(s.sale_date >= '2019-01-01'and s.sale_date <= '2019-03-31')>0 and sum(s.sale_date <'2019-01-01'or s.sale_date >'2019-03-31') =0

-- 附上having简易写法
-- HAVING MIN(sale_date) >= '2019-01-01' AND MAX(sale_date) <= '2019-03-31'

方法二:
– 1、先找到product_id不在2019-01-01’ and '2019-03-31’时间内,再让原表的product_id不在该范围内

select product_id,product_name
from Product
where product_id not in (
    select product_id
    from Sales
    where sale_date not between '2019-01-01' and '2019-03-31'
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值