PARTITION 2000實現方式

2021-09-08 07:53:03 字數 2150 閱讀 2815

--drop table test 

create

table test 

(id int, 

groupname varchar(

20), 

name varchar(

20), 

gage int 

) insert

into  test 

select

1,'中國','劉德華',

34union

select

2,'越南','周杰倫',

3union

select

3,'美國','周星馳',

34union

select

4,'南韓','劉瑪麗',

43union

select

56,'日本','劉結婚',

45union

select

23,'英國','劉大典',

32union

select

45,'美國','劉親愛',

21union

select

11,'日本','劉耳洞',

12union

select

23,'中國','劉方法',

3union

select

34,'日本','劉上網',

4union

select

35,'中國','周打發',

56union

select

54,'南韓','周風格',

65union

select

2,'中國','周傑克',

43union

select

23,'美國','周小弟',

23union

select

45,'中國','周時尚',

12union

select

12,'美國','週為',

45union

select

7,'南韓','李周',

56union

select

8,'中國','李發',

44union

select

9,'越南','李網',

23union

select

22,'越南','李上',

37union

select

11,'中國','李二',

28union

select

1,'中國','李但',

45--2005 

select  row_number () over (partition 

by  groupname 

order

by id ) iid,*   

from test t 

--2000 

select (

select

count(

1)  

from test t2 

where   t2.id<=t1.id 

and t2.groupname=t1.groupname ),  * 

from test t1 

order

by  groupname 

iid id groupname name gage

1 4 南韓 劉瑪麗 43

2 7 南韓 李周 56

3 54 南韓 周風格 65

4 45 美國 劉親愛 21

1 3 美國 周星馳 34

2 12 美國 週為 45

3 23 美國 周小弟 23

2 34 日本 劉上網 4

1 11 日本 劉耳洞 12

3 56 日本 劉結婚 45

1 23 英國 劉大典 32

3 22 越南 李上 37

2 9 越南 李網 23

1 2 越南 周杰倫 3

3 2 中國 周傑克 43

2 1 中國 李但 45

2 1 中國 劉德華 34

4 8 中國 李發 44

5 11 中國 李二 28

6 23 中國 劉方法 3

7 35 中國 周打發 56

8 45 中國 周時尚 12

PARTITION 2000實現方式

drop table test create table test id int,groupname varchar 20 name varchar 20 gage int insert into test select 1,中國 劉德華 34 union select 2,越南 周杰倫 3 uni...

Partition函式實現的快速排序演算法

被傳值傳引用的問題還有一些雜事困擾了一下午,現在終於可以靜下心來寫部落格了。這個partition函式是我在 劍指offer 那本書上看到的,其實對應於快排是乙個單項掃瞄。這個函式在很多演算法題上都有應用,主要原理就是選定乙個參考值,然後將資料分成兩部分,左邊都是比它小的,右邊都是比它大的。然後把中...

快速排序 一次遍歷partition的實現

一種partition的實現如下 1 private int partition int array,int left,int right 14 1516 int tem array i 1 17 array i 1 array right 18 array right tem 1920 retur...