我有一个关于航班的数据集,我有兴趣找出乘坐同一航班的乘客对坐在同一排。假设在所有航班中只有 Row 是唯一的,这意味着如果第 1 行被占用在航班号 10 中,那么它不会出现在航班号 11 中。
IE。查看下面的示例数据。
但是,如果有 3 个人乘坐同一个航班坐在同一排,那么我想忽略他们,这样我就只计算双人,而不是 3 人。
这是示例数据:
Passenger Flight_Number Row
1 10 1
2 10 1
3 10 3
4 11 5
1 11 5
2 11 6
3 11 7
1 12 2
2 12 2
3 12 2
给出了代码:
CREATE TABLE flight
(
Passenger INT NOT NULL,
Flight_Number INT NOT NULL,
Row_Number INT NOT NULL
);
INSERT INTO flight
VALUES(1, 10, 1),(2, 10, 1),(3, 10, 3),
(4, 11, 5),(1, 11, 5),(2, 11, 6),
(3, 11, 7),(1, 12, 2),(2, 12, 2),
(3, 12, 2);
我想要的是:
Flight_Number Row Passenger_A Passenger_B
10 1 1 2
11 5 4 1
这里特别说明,因为12号航班有3名乘客坐在同一排,所以我们忽略它。
到目前为止,我的想法是:
SELECT Passenger, Flight_Number, Row_Count
FROM flight RIGHT OUTER JOIN
(SELECT Row, COUNT(*) AS Row_Count FROM flight GROUP BY Row) AS Count
WHERE Row_Count = 2 AND...
对我如何继续这样做有任何帮助吗?IE。如何获取Passenger_A和Passenger_B等?
提前感谢您的时间。