--一.row_number(),rank,dense_rank(),ntile()用法--四个都是排序编号,
--row_number()按顺序编号,如果所排序字段值相同,则产生的行号可能不同
--rank为按排序字段分组,每组序号为各组第一行的当前行号
--dense_rank为按排序字段分组,每组序号为各组的实际排序序号
--ntile(n) 为按排序字段分组,把数据分成n份,每份为 总数据行/n,如果剩余,则按顺序从上到下增加一行,直到增加完为止
--所以每份不一定相等,但最多相差一行.可用于归类
select row_number() over(order by dept_id desc) as row_id,
rank() over(order by dept_id desc) as rk_id,
dense_rank() over(order by dept_id desc) as drk_id,
ntile(5) over(order by dept_id) as ntile_id,
dept_id,user_id
from usermnt where dept_id in('dept121','dept126','dept127','dept179','dept63')
order by dept_id desc;
--如下例子
row_id rk_id drk_id ntile_id dept_id user_id
-------------------- -------------------- -------------------- -------------------- ---------- ----------
1 1 1 5 DEPT179 YAOZY
2 2 2 4 DEPT127 LHT
3 2 2 4 DEPT127 AMYCHAN
4 4 3 3 DEPT126 CY
5 5 4 1 DEPT121 LINA
6 5 4 1 DEPT121 PENGYANG
7 5 4 2 DEPT121 SHIRLEY
8 5 4 2 DEPT121 LUNU
9 5 4 3 DEPT121 DEAN
(9 row(s) affected)
--一.row_number(),rank,dense_rank(),ntile()用法--四个都是排序编号,
--row_number()按顺序编号,如果所排序字段值相同,则产生的行号可能不同
--rank为按排序字段分组,每组序号为各组第一行的当前行号
--dense_rank为按排序字段分组,每组序号为各组的实际排序序号
--ntile(n) 为按排序字段分组,把数据分成n份,每份为 总数据行/n,如果剩余,则按顺序从上到下增加一行,直到增加完为止
--所以每份不一定相等,但最多相差一行.可用于归类
select row_number() over(order by dept_id desc) as row_id,
rank() over(order by dept_id desc) as rk_id,
dense_rank() over(order by dept_id desc) as drk_id,
ntile(5) over(order by dept_id) as ntile_id,
dept_id,user_id
from usermnt where dept_id in('dept121','dept126','dept127','dept179','dept63')
order by dept_id desc;
--如下例子
row_id rk_id drk_id ntile_id dept_id user_id
-------------------- -------------------- -------------------- -------------------- ---------- ----------
1 1 1 5 DEPT179 YAOZY
2 2 2 4 DEPT127 LHT
3 2 2 4 DEPT127 AMYCHAN
4 4 3 3 DEPT126 CY
5 5 4 1 DEPT121 LINA
6 5 4 1 DEPT121 PENGYANG
7 5 4 2 DEPT121 SHIRLEY
8 5 4 2 DEPT121 LUNU
9 5 4 3 DEPT121 DEAN
(9 row(s) affected)
SQL 2005行号产生
最新推荐文章于 2024-07-24 17:08:13 发布