SQL查詢 分割槽查詢Over

2022-07-01 01:48:08 字數 2931 閱讀 9701

1. over介紹

over為開窗函式。就是把滿足條件的資料分成幾個區域,每個區域可以通過像現實中的「視窗」來觀察統計這些資料。

over不能單獨使用,要和分析函式:rank(), dense_rank(), row_number(),ntile()等一起使用。

2. 示例

(1)指令碼

/*

表結構*/

create

table

student(

no int,

ca varchar(20

), name

varchar(50

), subject

varchar(50

), scorce

int);

/*資料

*/insert

into student values(1, '

1班', '

張三', '

語文', 85

);insert

into student values(2, '

1班', '

張三', '

數學', 90

);insert

into student values(3, '

1班', '

張三', '

英語', 70

);insert

into student values(4, '

1班', '

李四', '

語文', 70

);insert

into student values(5, '

1班', '

李四', '

數學', 99

);insert

into student values(6, '

1班', '

李四', '

英語', 62

);insert

into student values(7, '

1班', '

王五', '

語文', 82

);insert

into student values(8, '

1班', '

王五', '

數學', 74

);insert

into student values(9, '

1班', '

王五', '

英語', 89

);insert

into student values(10, '

2班', '

劉曉希', '

語文', 77

);insert

into student values(11, '

2班', '

劉曉希', '

數學', 99

);insert

into student values(12, '

2班', '

劉曉希', '

英語', 80

);insert

into student values(13, '

2班', '

朱鵬', '

語文', 87

);insert

into student values(14, '

2班', '

朱鵬', '

數學', 86

);insert

into student values(15, '

2班', '

朱鵬', '

英語', 76

);insert

into student values(16, '

2班', '

歐陽雪', '

語文', 91

);insert

into student values(17, '

2班', '

歐陽雪', '

數學', 83

);insert

into student values(18, '

2班', '

歐陽雪', '

英語', 77

);commit;

(2)rank(排名):

select t.*, rank() over(partition by t.subject order

by t.scorce desc) as paiming from student t;

按照科目進行分割槽,每個區域按照分數進行排序,並得出排序結果的排名號。rank()是跳躍排序,有兩個第1名,接下來就是第3名。

(2)dense_rank(密集排名)

select t.*,dense_rank() over(partition by t.subject order

by t.scorce desc) as paiming from student t;

按照科目進行分割槽,每個區域按照分數進行排序,並得出排序結果的排名號。dense_rank()為連續排序,有兩個第1名,接下來就是第2名。

(3)row_number(行號)

select t.*,row_number() over(partition by t.subject order

by t.scorce desc) as num from student t;

按照科目進行分割槽,每個區域按照分數進行排序,並得出排序結果的序號。

OVER 輕鬆搞定排名查詢

不多說,上 可以根據需要,分年級,科目,及性別出排名 drop table t1 create table t1 select年級 varchar select50,科目 varchar select50,學生名 varchar select20,性別 varchar select2,分數 deci...

sql查詢慢 查詢

select creation time n 語句編譯時間 last execution time n 上次執行時間 total physical reads n 物理讀取總次數 total logical reads execution count n 每次邏輯讀次數 total logical ...

sql查詢 範圍查詢(區間查詢)

1 範圍查詢 區間查詢 2 in 3 查詢年齡為18,28,38的人 select from student where age 18 or age 28 or age 38 4 select from student where age in 18,28,38 5 not in6 查詢年齡為18,...