gpt4 book ai didi

sql - 想要了解更多关于 NTILE() 的信息

转载 作者:行者123 更新时间:2023-12-01 18:41:00 25 4
gpt4 key购买 nike

我正在阅读 ms sql 的 RANKING 函数。我了解除 NTILE() 之外的其他函数。假设我有这些数据:

   StudentID     MARKS  
S1 75
S2 83
S3 91
S4 83
S5 93

那么,如果我执行 NTILE(2) OVER(ORDER BY MARKS desc) 结果会是什么,为什么?
如果它是 NTILE(3) 怎么办?有人简单解释一下吗?

最佳答案

将其视为桶,NTILE(2) 将生成 2 个桶,一半行的值为 1,另一半行的值为 2

示例

create table  #temp(StudentID char(2),    Marks  int) 
insert #temp values('S1',75 )
insert #temp values('S2',83)
insert #temp values('S3',91)
insert #temp values('S4',83)
insert #temp values('S5',93 )


select NTILE(2) over(order by Marks),*
from #temp
order by Marks

这是输出,由于行数不均匀,存储桶 1 将多出 1 行

1   S1  75
1 S2 83
1 S4 83
2 S3 91
2 S5 93

如果再添加一行

insert #temp  values('S6',92 ) 

现在两个桶都有 3 行

1   S1  75
1 S2 83
1 S4 83
2 S3 91
2 S6 92
2 S5 93

实际上,我从未在生产代码中使用过 NTILE,但我可以看到需要将结果拆分为 n 个存储桶的用途

关于sql - 想要了解更多关于 NTILE() 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14355324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com