SQL 81) 牛客的课程订单分析(五)

牛客的课程订单分析(五)

http://www.nowcoder.com/questionTerminal/348afda488554ceb922efd2f3effc427

新增限制条件

  • 第二次购买成功的C++课程或Java课程或Python课程的日期second_buy_date

参考了友友的答案,where筛选max min 真的很妙
但不太理解为什么要group by...希望有大神解释一下 TVT

select a.user_id,
min(date) as first_buy_date,
max(date) as second_buy_date,
a.cnt
from
(select user_id , date, row_number()over(partition by user_id order by date asc) r_number ,
count(id)over(partition by user_id)cnt
from order_info
where date > '2025-10-15'
and product_name in ('C++','Java','Python')
and status = 'completed')a
where a.r_number <= 2
and a.cnt >= 2
group by a.user_id , a.cnt
order by a.user_id asc;
SQL 文章被收录于专栏

SQL

全部评论
因为min(),max()是聚合函数,其作用是将多行数据按条件转成一行数据。如果不分组的话,你这里就一条结果
1 回复 分享
发布于 2021-04-16 16:50
为什么可以用max?如果有购买三次的,max就是第三次的购买记录了。题目要求第一第二次。这个可以用的吗
1 回复 分享
发布于 2021-06-11 17:01
如果没有group by就会出现,同一个user_id第一次购买一条数据,第二次购买一次数据,不能把两次购买放在一条数据里面
点赞 回复 分享
发布于 2022-05-22 17:32

相关推荐

点赞 评论 收藏
分享
评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务