多關鍵字的分組排序

2021-08-25 10:19:21 字數 1793 閱讀 6509

首先說下order by

order by asc是公升序

一般預設是公升序

降序的話是order by desc

如果我們想按照指定的字段順序來排列怎麼做呢

有乙個表t

以下是select * from t

id name country

1 a tw

2 b jp

3 c us

4 d jp

5 e us

6 f tw

7 g jp

如果select * from t order by country

id name country

2 b jp

4 d jp

7 g jp

1 a tw

6 f tw

5 e us

3 c us

如果我想以 tw->us->jp順序來的話

select * from t

order by (case country

when 'tw' then 1

when 'us' then 2

when 'jp' then 3

end)

結果就是

1 a tw

6 f tw

5 e us

3 c us

4 d jp

2 b jp

7 g jp

接下來如果在分組中如何排序呢

select area_code,substr(order_time,0,8),count(*) from wangbh_temp

group by area_code,substr(order_time,0,8)

order by substr(order_time,0,8),(

case area_code when 'qz' then 1

when 'hz' then 2

when 'hu' then 3

when 'jx' then 4

when 'nb' then 5

when 'sx' then 6

when 'tz' then 7

when 'wz' then 8

when 'ls' then 9

when 'jh' then 10

when 'zs' then 11

end)

area_code substr(order_time,0,8) count(*)

qz 20100901 3

hz 20100901 5

hu 20100901 4

jx 20100901 1

nb 20100901 11

sx 20100901 1

tz 20100901 6

wz 20100901 4

ls 20100901 1

jh 20100901 8

hz 20100902 3

jx 20100902 2

nb 20100902 5

tz 20100902 1

wz 20100902 7

ls 20100902 1

jh 20100902 2

以上查詢中先以area_code substr(order_time,0,8)進行分組,

然後以substr(order_time,0,8)預設公升序排序,

再以 'qz'->'hz'->'hu'-> 'jx'->'nb'->'sx'->'tz'->'wz'->'ls'->'jh'->'zs' 的順序排序

lintcode多關鍵字排序

給定 n 個學生的學號 從 1 到 n 編號 以及他們的考試成績,表示為 學號,考試成績 請將這些學生按考試成績降序排序,若考試成績相同,則按學號公升序排序。使用sort方法,先對item0排序,再對item1排序,優先順序越高的排序越後做 class solution param array th...

成績排序 多關鍵字

題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入描述 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出描述 按照學生的成績從小到大進行排序,並將排序後的學生資訊列印出來。如果學生的成績相同,則按照學號的大小...

多關鍵字排序。c

多關鍵字排序 乙個長方形有長和寬,分別設為 a 和 b,現在想對一些長方形進行排序。有一種新的排序方法。如下 我們按照兩個長方形的a b值來對他們按降序排序,如果有重複,按照b值公升序排序,如果還有重複,按照輸入的順序排序。也就是說,是多關鍵字排序 第1關鍵字,a b,降序 第2關鍵字,b,公升序 ...