跳到主要内容

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

序号题目难度
1204题目链接中等

题目大意​

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

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

表: Queue

Column NameType
person_idint
person_namevarchar
weightint
turnint

person_id 是这个表具有唯一值的列。 该表展示了所有候车乘客的信息。 表中 person_id 和 turn 列将包含从 1 到 n 的所有数字,其中 n 是表中的行数。 turn 决定了候车乘客上巴士的顺序,其中 turn=1 表示第一个上巴士,turn=n 表示最后一个上巴士。 weight 表示候车乘客的体重,以千克为单位。

示例​

输入​

Queue 表

person_idperson_nameweightturn
5Alice2501
4Bob1755
3Alex3502
6John Cena4003
1Winston5006
2Marie2004

输出​

person_name
John Cena

解释​

为了简化,Queue 表按 turn 列由小到大排序。

TurnIDNameWeightTotal Weight
15Alice250250
23Alex350600
36John Cena4001000
42Marie2001200
54Bob175___
61Winston500___

参考答案​

with t1 as (
select
person_name
,sum(weight) over(order by turn asc) as total_weight
from Queue
group by 1
)
select
person_name
from t1
where t1.total_weight <=1000
order by total_weight desc
limit 1
;