SQL 2005行号产生

 --一.row_number(),rank,dense_rank(),ntile()用法
--
四个都是排序编号,
--
row_number()按顺序编号,如果所排序字段值相同,则产生的行号可能不同
--
rank为按排序字段分组,每组序号为各组第一行的当前行号
--
dense_rank为按排序字段分组,每组序号为各组的实际排序序号
--
ntile(n) 为按排序字段分组,把数据分成n份,每份为 总数据行/n,如果剩余,则按顺序从上到下增加一行,直到增加完为止
--
所以每份不一定相等,但最多相差一行.可用于归类
select row_number() over(order by dept_id descas row_id,
    rank() 
over(order by dept_id descas rk_id,
    dense_rank() 
over(order by dept_id descas drk_id,
    ntile(
5over(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 descas row_id,
    rank() 
over(order by dept_id descas rk_id,
    dense_rank() 
over(order by dept_id descas drk_id,
    ntile(
5over(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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值