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 使得數據按必定順序排序函數
二、MySQL5.7版本spa
例如:計算銷售人員的銷售額,結果按從高到低排序,查詢結果中要包含銷售的排名排序
SET @rank := 0;
SELECT
A.*,
@rank := @rank + 1 AS rank
FROM
( SELECT sales_name, sum( sales ) FROM spm_orderci
GROUP BY sales_name it
ORDER BY sum( sales ) DESC ) Aio
例:計算銷售人員在不一樣城市的銷售額;數據
要求:結果根據銷售人員在不一樣城市的銷售額進行分組排序(降序),而且查詢結果要包含分組排名查詢
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 co
GROUP BY sales_name, city background
ORDER BY sales_name, sum( sales ) DESC ) a;