我正在使用SQL Server 2012
查询是:
create table #t (id int)
insert into #t values(1), (2), (3), (4), (5)
select id, ntile(2) over (order by id desc)
from #t
结果:
id (No column name) (Expected was)
-------------------------------------
5 1 1
4 1 1
3 1 2
2 2 2
1 2 3
我期待SQL Server中的3列结果,为什么它的行为不同?
Ntile(2)
每个应该给2个号码?
答案 0 :(得分:1)
来自NTILE technet文档:
对于每一行,NTILE返回行所属的组的编号 所属
NTILE(2)
创建两个数据组,因此返回的数字只能在(1,2)
中。
您似乎认为NTILE
会返回每个组中每行的位置,显然情况并非如此。
如果您使用NTILE(3)
,则会创建 3 组数据,即
1. `{5, 4}` -> 1st group,
2. `{3, 2}` -> 2nd group and
3. `{1}` -> 3rd group.