• 1204. 最后一个能进入电梯的人


    SQL架构

    表: Queue

    +-------------+---------+
    | Column Name | Type    |
    +-------------+---------+
    | person_id   | int     |
    | person_name | varchar |
    | weight      | int     |
    | turn        | int     |
    +-------------+---------+
    person_id 是这个表的主键。
    该表展示了所有等待电梯的人的信息。
    表中 person_id 和 turn 列将包含从 1 到 n 的所有数字,其中 n 是表中的行数。
    

    有一群人在等着上公共汽车。然而,巴士有1000 公斤的重量限制,所以可能会有一些人不能上。

    写一条 SQL 查询语句查找 最后一个 能进入电梯且不超过重量限制的 person_name 。题目确保队列中第一位的人可以进入电梯,不会超重。

    查询结果如下所示。

    示例 1:

    输入:
    Queue 表
    +-----------+-------------------+--------+------+
    | person_id | person_name       | weight | turn |
    +-----------+-------------------+--------+------+
    | 5         | George Washington | 250    | 1    |
    | 3         | John Adams        | 350    | 2    |
    | 6         | Thomas Jefferson  | 400    | 3    |
    | 2         | Will Johnliams    | 200    | 4    |
    | 4         | Thomas Jefferson  | 175    | 5    |
    | 1         | James Elephant    | 500    | 6    |
    +-----------+-------------------+--------+------+
    输出:
    +-------------------+
    | person_name       |
    +-------------------+
    | Thomas Jefferson  |
    +-------------------+
    解释:
    为了简化,Queue 表按 turn 列由小到大排序。
    上例中 George Washington(id 5), John Adams(id 3) 和 Thomas Jefferson(id 6) 将可以进入电梯,因为他们的体重和为 250 + 350 + 400 = 1000。
    Thomas Jefferson(id 6) 是最后一个体重合适并进入电梯的人。
    1. select
    2. ss1.person_name
    3. from
    4. (
    5. select
    6. s1.person_name,s1.sum_weight,lead(s1.sum_weight,1,1001) over(order by turn) l
    7. from
    8. (
    9. select
    10. person_id,person_name,weight,turn,
    11. sum(weight) over(order by turn rows between unbounded preceding and current row) sum_weight
    12. from
    13. Queue
    14. order by turn
    15. ) s1
    16. ) ss1
    17. where ss1.sum_weight<=1000 and ss1.l>1000

  • 相关阅读:
    学python的第十八天
    京东商品详情API:电商创新的利器
    [Approaching any Machine Learning] Supervised vs unsupervised learning - Note
    图解LeetCode——640. 求解方程(难度:中等)
    [Machine learning][Part4] 线性回归模型技巧
    java学习笔记(八)—— 继承
    服务器技术(二)--Linux进阶应用(3)--Bash Shell及Linux部署办公OA项目实践
    1016 Phone Bills
    在VS Code中优雅地编辑csv文件
    Java中的线程到底有哪些安全策略
  • 原文地址:https://blog.csdn.net/m0_69157845/article/details/125430485