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

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
6 1 评论
分享
牛客网
牛客企业服务