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...