【高频SQL基础版本】1204.最后一个能进入巴士的人

文章介绍了如何在SQL查询中使用窗口函数SUM()over(ORDERBYturn)进行累加求和,以解决按顺序累加体重问题,并通过降序排序找到累加和小于等于1000kg的最大值。示例代码展示了如何在Queue表中实现这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

自己去搜一下吧。

解题思路:

这里最重要的知识点是累加求和,而不是直接汇总求和

如果直接汇总求和体重就是SUM(weight),而根据turn的次序,累加求和,则需要SUM(weight)over (order by turn),这样就可以实现根据次序,累加体重的问题。

还有一个问题,因为他需要找到累加小于等于1000KG的最大值。

怎么实现呢?通过降序排序total_weight,然后取一个。这便实现了最大值的问题,而不用非得用max之类的。

答案参考:

select t.person_name from (select turn,person_id,person_name  ,weight,SUM(weight) OVER (ORDER BY turn ) as total_weight from Queue  order by turn ) t

where t.total_weight <= 1000 ORDER BY t.total_weight DESC  LIMIT 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值