分組排序函式 row number

2022-07-03 10:36:09 字數 1378 閱讀 6472

1、mysql8.0以上版本

用法1:無分組排序

row_number() over(order by 字段 desc)

例如:row_number() over(order by 學生成績 desc)

表示不分班級,所有學生的成績從高到低排序

用法2:分組排序

row_number() over(partition by 欄位1 order by 欄位2 desc)

表示根據欄位1分組,在分組內部根據欄位2排序,這個函式計算的值就表示每組內部排序後的順序編號

例如:row_number() over(partition by 班級 order by 學生成績 desc)

表示根據「班級」分組,在每個「班級」內部根據「學生成績」排序,這個函式計算的值就表示每組內部排序後的

順序編號

解釋:row_number( )  起到了編號的功能

partition by  將相同資料進行分割槽

order by    使得資料按一定順序排序

2、mysql5.7版本

用法1:無分組排序

例如:計算銷售人員的銷售額,結果按從高到低排序,查詢結果中要包含銷售的排名

set @rank := 0;

select

a.*,

@rank := @rank + 1 as rank 

from

( select sales_name, sum( sales ) from spm_order

group by sales_name

order by sum( sales ) desc ) a

用法2:分組排序

例:計算銷售人員在不同城市的銷售額;

要求:結果根據銷售人員在不同城市的銷售額進行分組排序(降序),並且查詢結果要包含分組排名

set @r := 0,

@type := '';

select

@r :=

case when @type = a.sales_name then

@r + 1 else 1

end as rownum,

@type := a.sales_name as type,

a.*

from

( select sales_name, city, sum( sales ) from spm_order

group by sales_name, city

order by sales_name, sum( sales ) desc ) a;

Hive的分組排序方法 row number

這個方法總而言之就是幫助使用者減少工作量 比如,如下結構 create table user order user id int comment 使用者id pro id int comment 產品id value string comment 查出每個使用者買的價值最高的兩個用品,如果不用row...

Oracle 分組排序函式

專案開發中,我們有時會碰到需要分組排序來解決問題的情況 1 要求取出按field1分組後,並在每組中按照field2排序 2 亦或更加要求取出1中已經分組排序好的前多少行的資料 這裡通過一張表的示例和sql語句闡述下oracle資料庫中用於分組排序函式的用法。1.row number over ro...

Oracle 分組排序函式

專案開發中,我們有時會碰到需要分組排序來解決問題的情況 1 要求取出按field1分組後,並在每組中按照field2排序 2 亦或更加要求取出1中已經分組排序好的前多少行的資料 這裡通過一張表的示例和sql語句闡述下oracle資料庫中用於分組排序函式的用法。1.row number over ro...