gpt4 book ai didi

MySQL 计数、融化( reshape )变量

转载 作者:行者123 更新时间:2023-11-29 13:28:28 25 4
gpt4 key购买 nike

我有一个关于航类的数据集,我有兴趣找出乘坐同一航类的一对乘客坐在同一排。假设所有航类中只有 Row 是唯一的,这意味着如果第 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

这里特别说明,因为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等?

感谢您提前抽出时间。

最佳答案

尝试一下:

SELECT DISTINCT
a.Flight_Number,a.Row_Number,
f1.Passenger as Passenger_A,
f2.Passenger as Passenger_B
FROM (
select Flight_Number,Row_Number from flight
group by Flight_Number,Row_Number having count(*)=2
) a
join flight f1
on (f1.Flight_Number=a.Flight_Number and f1.Row_Number=a.Row_Number)
join flight f2
on (f2.Flight_Number=a.Flight_Number and f2.Row_Number=a.Row_Number)
where f1.Passenger>f2.Passenger

最后一个条件消除了重复的对以及将乘客与他自己耦合。

关于MySQL 计数、融化( reshape )变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com