四大排序函数

 row_number() over(partition by clause order by filed asc|desc )----连续的从1开始到n的排序号
 rank() over ( partition by clause order by filed asc|desc)---不连续的可以出现重复排序号
 
dense_rank() over (partition by clause order by filed asc|desc)--连续的可以出现重复排序号
 
ntile (integer_expression) over (partition by clause order by  filed asc|desc )--连续的可以分组排序并且排序号是连续的
----案例

create table tb (
[year] [int] NOT NULL,
[week] [int] NOT NULL,
[base_goods_id] [int] NOT NULL,
[uid] [bigint] NOT NULL,
[amount] [money] NOT NULL,
[count] [int] NOT NULL,
[bean] [money] NOT NULL
)
insert tb  
select 2013,2,6577,20087,32640.00,1088,26112.00
union all
select 2013,2,6577,20211,39420.00,1314,31536.00
union all
select 2013,2,6577,20220,60.00,2,111.00
union all
select 2013,2,6577,20457,60.00,2,48.00
union all
select 2013,2,6577,20458,60.00,2,48.00
go
select * from tb 
/*
2013	2	6577	20087	32640.00	1088	26112.00
2013	2	6577	20211	39420.00	1314	31536.00
2013	2	6577	20220	60.00	2	111.00
2013	2	6577	20457	60.00	2	48.00
2013	2	6577	20458	60.00	2	48.00
*/

select ROW_NUMBER() over(partition by base_goods_id order by count)rn,* from tb 

/*
rn	year	week	base_goods_id	uid	amount	count	bean
1	2013	2	6577	20220	60.00	2	111.00
2	2013	2	6577	20457	60.00	2	48.00
3	2013	2	6577	20458	60.00	2	48.00
4	2013	2	6577	20087	32640.00	1088	26112.00
5	2013	2	6577	20211	39420.00	1314	31536.00
*/

select dense_rank()over(partition by base_goods_id order by count )rn,* from tb 
/*
rn	year	week	base_goods_id	uid	amount	count	bean
1	2013	2	6577	20220	60.00	2	111.00
1	2013	2	6577	20457	60.00	2	48.00
1	2013	2	6577	20458	60.00	2	48.00
2	2013	2	6577	20087	32640.00	1088	26112.00
3	2013	2	6577	20211	39420.00	1314	31536.00
*/

select rank()over(partition by base_goods_id order by count )rn,* from tb 

/*
1	2013	2	6577	20220	60.00	2	111.00
1	2013	2	6577	20457	60.00	2	48.00
1	2013	2	6577	20458	60.00	2	48.00
4	2013	2	6577	20087	32640.00	1088	26112.00
5	2013	2	6577	20211	39420.00	1314	31536.00
*/

select ntile(2)over(partition by base_goods_id order by count )rn,* from tb 

/*
rn	year	week	base_goods_id	uid	amount	count	bean
1	2013	2	6577	20220	60.00	2	111.00
1	2013	2	6577	20457	60.00	2	48.00
1	2013	2	6577	20458	60.00	2	48.00
2	2013	2	6577	20087	32640.00	1088	26112.00
2	2013	2	6577	20211	39420.00	1314	31536.00
*/



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值