力扣高频SQL 50题(基础版)第四十一题之1204.最后一个能进入巴士的人

力扣高频SQL 50题(基础版)第四十二题之1204.最后一个能进入巴士的人

1204.最后一个能进入巴士的人

题目说明

表: Queue

±------------±--------+

| Column Name | Type |

±------------±--------+

| person_id | int |

| person_name | varchar |

| weight | int |

| turn | int |

±------------±--------+

person_id 是这个表具有唯一值的列。

该表展示了所有候车乘客的信息。

表中 person_id 和 turn 列将包含从 1 到 n 的所有数字,其中 n 是表中的行数。

turn 决定了候车乘客上巴士的顺序,其中 turn=1 表示第一个上巴士,turn=n 表示最后一个上巴士。

weight 表示候车乘客的体重,以千克为单位。

有一队乘客在等着上巴士。然而,巴士有1000 千克 的重量限制,所以其中一部分乘客可能无法上巴士。

编写解决方案找出 最后一个 上巴士且不超过重量限制的乘客,并报告 person_name 。题目测试用例确保顺位第一的人可以上巴士且不会超重。

实现过程

准备数据
Create table If Not Exists Queue (person_id int, person_name varchar(30), weight int, turn int)
Truncate table Queue
insert into Queue (person_id, person_name, weight, turn) values ('5', 'Alice', '250', '1')
insert into Queue (person_id, person_name, weight, turn) values ('4', 'Bob', '175', '5')
insert into Queue (person_id, person_name, weight, turn) values ('3', 'Alex', '350', '2')
insert into Queue (person_id, person_name, weight, turn) values ('6', 'John Cena', '400', '3')
insert into Queue (person_id, person_name, weight, turn) values ('1', 'Winston', '500', '6')
insert into Queue (person_id, person_name, weight, turn) values ('2', 'Marie', '200', '4')
实现方式
with t1 as(
select *,
       sum(weight) over(order by turn) sum
from Queue)
select last_value(person_name) over (order by turn desc) person_name from t1 where sum<=1000 limit 1;
结果截图

) person_name from t1 where sum<=1000 limit 1;


#### 结果截图

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a28af37bc1844e7a927157e6dc0f7d2d.png)

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值