Flights
表
(资料图)
+-------------+------+
| 列名 | 类型 |
+-------------+------+
| flight_id | int |
| capacity | int |
+-------------+------+
flight_id 是该表的主键。 该表的每一行包含航班ID和它的座位容量。
Passengers
表
+--------------+------+
| Column Name | Type |
+--------------+------+
| passenger_id | int |
| flight_id | int |
+--------------+------+
passenger_id 是该表的主键列。 该表的每一行包含乘客ID和航班ID。
乘客提前预订航班机票。如果乘客预订了某个航班的机票,并且该航班还有空座位,乘客的机票将会得到 确认 。然而,如果航班已经满员,乘客将会进入 等待名单 。
编写一条 SQL 查询,报告每个航班已成功预订(获得座位)的乘客数以及处于等待名单上的乘客数。
按照航班 id 升序排序返回结果表。
查询结果格式如下例所示。
示例 1:
输入:
Flights table:
+-----------+----------+
| flight_id | capacity |
+-----------+----------+
| 1 | 2 |
| 2 | 2 |
| 3 | 1 |
+-----------+----------+
Passengers table:
+--------------+-----------+
| passenger_id | flight_id |
+--------------+-----------+
| 101 | 1 |
| 102 | 1 |
| 103 | 1 |
| 104 | 2 |
| 105 | 2 |
| 106 | 3 |
| 107 | 3 |
+--------------+-----------+
输出:
+-----------+------------+--------------+
| flight_id | booked_cnt | waitlist_cnt |
+-----------+------------+--------------+
| 1 | 2 | 1 |
| 2 | 2 | 0 |
| 3 | 1 | 1 |
+-----------+------------+--------------+
解释:
- 航班 1 的座位容量为 2。由于有 3 名乘客预订了机票,只有 2 名乘客可以获得座位。因此,有 2 名乘客成功预订,并且有 1 名乘客在等待名单上。- 航班 2 的座位容量为 2。由于有 2 名乘客预订了机票,每个人都可以获得座位。结果是,有 2 名乘客成功预订了座位,且没有乘客在等待名单上。- 航班 3 的座位容量为 1。由于有 2 名乘客预订了机票,只有 1 名乘客可以获得座位。因此,有 1 名乘客成功预订,并且有 1 名乘客在等待名单上。
我们可以使用左连接将 Flights
和 Passengers
表连接起来,然后按照 flight_id
分组,统计每个航班的乘客数量。
对于每个航班,我们可以使用 count(passenger_id)
统计乘客数量,取 capacity
和 count(passenger_id)
的最小值作为已预订的乘客数量,取 count(passenger_id) - capacity
和 0 的最大值作为等待名单上的乘客数量。
下一篇:最后一页
根据目前客流预测分析和疫情防控情况,铁路部门从5月18日起,在上海地区现有开行12趟列车的基础上,恢复开行上海虹桥站至宁波、阜阳西
中新网太原5月18日电 (记者 范丽芳)5月18日,山西太原7例本土新冠肺炎感染者治愈出院,其中确诊病例3例(普通型2例、轻型1例)、无症状
今天(5月18日)下午3时,浙江杭州金沙湖公园下沉广场出现管涌,湖水外溢致使金沙湖地铁站形成涝水。相关部门立即组织应急抢修,开展管涌
5月17日,在北京市新型冠状病毒肺炎疫情防控工作第337场新闻发布会上,市卫健委党委委员王小娥介绍,本轮疫情病例平均年龄43 5岁,最大
中新网呼伦贝尔5月18日电 (记者 张林虎)18日,记者从内蒙古自治区呼伦贝尔市中级人民法院获悉,内蒙古公安厅原党委委员、副厅长张效