假设我有一个包含A
,B
,C
,D
,E
等列的表,其中每列都是{{ 1}}。此表填充了数百行,每列中包含随机值。返回每列相应的第25个百分位值的最佳方法是什么?
例如:
int
此处列A B C D E
1 5 8 9 3
3 6 5 0 2
8 3 6 1 8
4 1 8 3 1
7 2 2 6 9
由值1,3,4,8和7组成。此集合的第25个百分位应为 3 。列A
由值1,2,3,5和6组成。此集合的第25百分位应为 2 。 B
5 ,C
1 ,D
2 。由于有5行,第25百分位数只是第二个最小值。如果有40行,那么它将是第10个最小值。如何有效地编写返回的查询:
E
我尝试了什么:
A B C D E
3 2 5 1 2
我有大约40个这些列,而且我的数据集和NTILE的经验就是那么多列,性能成为一个严重的问题。有没有人有更好的主意?
答案 0 :(得分:2)
您的解决方案是正确的。我没有看到更好的解决方案。
每列需要不同的行 ,因此您必须分别查询每个列。如果你有40列,那么40个CTE连接在一起。简单。
通常,您期望符合某些条件的行的整行,一行或一行或一列子列:不要期望单独查询每一列以获取与其他值无关的值行。
答案 1 :(得分:0)
我不确定以下文章是否仍与当前版本的MS SQL服务器相关,但您可以查看它