SQL 排序 table
SQL sort and order table
我一直在尝试这个,但没有达到我想要的确切结果。
我有这个table:
id aviacompany destination departure_time duration
1 Alaska Air ATL 09-45 180
2 Alaska Air ATL 00-56 195
3 Alaska Air LAS 01-00 304
4 JetBlue MIA 06-10 256
5 JetBlue ATL 09-50 200
6 JetBlue MIA 18-43 270
7 JetBlue SFO 23-24 180
8 Silver DTW 07-10 120
9 Silver SEA 18-01 137
10 Silver DTW 19-32 183
我想按每个航空公司运营的航班总数降序排列;
• 如果出现并列,则按航空公司名称的字母顺序排序
• 然后,按由同一航空公司运营的飞往特定目的地的航班总数排序
• 如果出现并列,则按目标列的字母顺序排序
• 最后,如果仍然存在联系,请按 departure_time 列按时间顺序排序。
输出应如下所示:
id destination departure_time
4 MIA 06-10
6 MIA 18-43
5 ATL 09-50
7 SFO 23-24
2 ATL 00-56
1 ATL 09-45
3 LAS 01-00
8 DTW 07-10
10 DTW 19-32
9 SEA 18-01
谢谢
您可以使用 window 函数 来导出所需的排序标准,假设您使用的是 MySql 8
select id, destination, departure_time
from (
select *,
Count(*) over(partition by aviacompany) aQty,
Count(*) over(partition by aviacompany,destination) dQty
from t
)t
order by
aQty desc,
aviacompany,
dQty desc,
destination,
departure_time
我一直在尝试这个,但没有达到我想要的确切结果。
我有这个table:
id aviacompany destination departure_time duration
1 Alaska Air ATL 09-45 180
2 Alaska Air ATL 00-56 195
3 Alaska Air LAS 01-00 304
4 JetBlue MIA 06-10 256
5 JetBlue ATL 09-50 200
6 JetBlue MIA 18-43 270
7 JetBlue SFO 23-24 180
8 Silver DTW 07-10 120
9 Silver SEA 18-01 137
10 Silver DTW 19-32 183
我想按每个航空公司运营的航班总数降序排列;
• 如果出现并列,则按航空公司名称的字母顺序排序
• 然后,按由同一航空公司运营的飞往特定目的地的航班总数排序
• 如果出现并列,则按目标列的字母顺序排序
• 最后,如果仍然存在联系,请按 departure_time 列按时间顺序排序。
输出应如下所示:
id destination departure_time
4 MIA 06-10
6 MIA 18-43
5 ATL 09-50
7 SFO 23-24
2 ATL 00-56
1 ATL 09-45
3 LAS 01-00
8 DTW 07-10
10 DTW 19-32
9 SEA 18-01
谢谢
您可以使用 window 函数 来导出所需的排序标准,假设您使用的是 MySql 8
select id, destination, departure_time
from (
select *,
Count(*) over(partition by aviacompany) aQty,
Count(*) over(partition by aviacompany,destination) dQty
from t
)t
order by
aQty desc,
aviacompany,
dQty desc,
destination,
departure_time