簡體   English   中英

SQL排序表

[英]SQL sort and order 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

我想按每個航空公司運營的航班總數降序排序;

• 如果出現平局,請按航空公司名稱的字母順序排序

• 然后,按同一航空公司運營的飛往特定目的地的航班總數排序

• 如果出現平局,請按目標列按字母順序排序

• 最后,如果仍有平局,按department_time 列按時間順序排序。

Output 應如下所示:

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

演示小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM