题解 | #牛客的课程订单分析(七)#

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

http://www.nowcoder.com/practice/d6f4a37f966145da8900ba9edcc4c068

明确问题:

第一列是显示的是客户端名字,如果是拼团订单则显示GroupBuy,

第二列显示这个客户端(或者是拼团订单)有多少订单,最后结果按照第一列(source)升序排序

第一步首先把题目中的条件限定好

from order_info

where date>'2025-10-15'

and status='completed'

and product_name in('C++','Java','Python')

第二步 使用count(*)over窗口函数把表按个数区分

count(*)over(partition by user_id )

第三步把条件和client表连接起来

from

(select id

,client_id

,user_id

,count(*)over(partition by user_id ) as ct

from order_info

where date>'2025-10-15'

and status='completed'

and product_name in('C++','Java','Python'))as a

left join client as b

on a.client_id=b.id

where a.ct>=2

所以可以使用case when 语句进行条件判断

case when a.client_id=0 then'GroupBuy' else b.name end

然后计算每个分类的个数就是最终结果了

select case when a.client_id=0 then'GroupBuy' else b.name end as source,count() from (select id ,client_id ,user_id ,count()over(partition by user_id ) as ct from order_info where date>'2025-10-15' and status='completed' and product_name in('C++','Java','Python'))as a left join client as b on a.client_id=b.id where a.ct>=2 group by case when a.client_id=0 then'GroupBuy' else b.name end order by 1

全部评论

相关推荐

03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务