返回介绍

solution / 2100-2199 / 2142.The Number of Passengers in Each Bus I / README

发布于 2024-06-17 01:03:09 字数 2402 浏览 0 评论 0 收藏 0

2142. 每辆车的乘客人数 I

English Version

题目描述

表: Buses

+--------------+------+
| Column Name  | Type |
+--------------+------+
| bus_id     | int  |
| arrival_time | int  |
+--------------+------+
bus_id 是该表的主键。
该表的每一行都包含关于 LeetCode 站点的公交车到达时间的信息。
不会出现两辆公交车会同时到达。

 

表: Passengers

+--------------+------+
| Column Name  | Type |
+--------------+------+
| passenger_id | int  |
| arrival_time | int  |
+--------------+------+
passenger_id 是该表的主键。
该表的每一行都包含乘客到达 LeetCode 站的时间信息。

 

公交车和乘客到达 LeetCode 站。如果一辆公交车在时间 tbus 到站,乘客在时间 tpassenger 到站,其中 tpassenger <= tbus,该乘客之前没有赶上任何公交车,则该乘客将搭乘该公交车。

编写一个 SQL 来查询使用每辆公交车的用户数量。

返回按 bus_id 升序排序 的结果表。

查询结果格式如下所示。

示例 1:

输入: 
Buses 表:
+--------+--------------+
| bus_id | arrival_time |
+--------+--------------+
| 1    | 2      |
| 2    | 4      |
| 3    | 7      |
+--------+--------------+
Passengers 表:
+--------------+--------------+
| passenger_id | arrival_time |
+--------------+--------------+
| 11       | 1      |
| 12       | 5      |
| 13       | 6      |
| 14       | 7      |
+--------------+--------------+
输出: 
+--------+----------------+
| bus_id | passengers_cnt |
+--------+----------------+
| 1    | 1        |
| 2    | 0        |
| 3    | 3        |
+--------+----------------+
解释: 
- 11 号乘客在时间 1 到达。
- 1 号公交车到达时间为 2,搭载 11 号乘客。

- 2 号公交车车在时间 4 到达,没有乘客。

- 12 号乘客在时间 5 到达。
- 13 号乘客在时间 6 到达。
- 14 号乘客在时间 7 到达。
- 3 号车在时间 7 到达,搭载 12、13、14 号乘客。

解法

方法一

# Write your MySQL query statement below
SELECT
  bus_id,
  COUNT(passenger_id) - LAG(COUNT(passenger_id), 1, 0) OVER (
    ORDER BY b.arrival_time
  ) AS passengers_cnt
FROM
  Buses AS b
  LEFT JOIN Passengers AS p ON p.arrival_time <= b.arrival_time
GROUP BY 1
ORDER BY 1;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文