フライトに関するデータ セットがあり、同じフライトに乗った乗客のペアが同じ列に座っていることを知りたいと思っています。すべてのフライトで行のみが一意であると仮定すると、行 1 がフライト番号 10 で占有されている場合、フライト 11 には表示されません。
すなわち。以下のサンプルデータを見てください。
ただし、同じ列に座って同じフライトを利用した 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
Special notes in here, because Flight number 12 has 3 passengers sitting in the same row, thus we ignore it.
So far, my thoughts are:
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...
Any helps on how I may continue this? ie. How to get Passenger_A and Passenger_B and etc?
Thank you for your time in advance.