题目需求
从订单详情表(order_detail)中找出销售额连续3天超过100的商品。
期望结果如下:
sku_id (商品id) |
---|
1 |
10 |
11 |
… |
需要用到的表:
订单明细表:order_detail
order_detail_id(订单明细id) | order_id(订单id) | sku_id(商品id) | create_date(下单日期) | price(商品单价) | sku_num(商品件数) |
---|---|---|---|---|---|
1 | 1 | 1 | 2021-09-30 | 2000.00 | 2 |
2 | 1 | 3 | 2021-09-30 | 5000.00 | 5 |
… | … | … | … | … | … |
实现一
-- 2)查询至少连续三天下单的用户
select distinct sku_id
from (
-- 1) 统计每个 sku_id 每个 create_date 的销售总额(并筛选出 销售总额超过100的记录)
select sku_id,
create_date,
-- 思路看: http://t.csdn.cn/LeXCw
date_add(create_date, -row_number() over (partition by sku_id order by create_date)) as sub_res
from order_detail
group by sku_id, create_date
-- 筛选出销售总额超过100的记录
having sum(price * sku_num) > 100
) t1
group by sku_id, sub_res
having count(*) >= 3;
题目来源
http://practice.atguigu.cn/#/question/27/desc?qType=SQL