多列的第25百分位数

时间:2010-11-09 05:25:22

标签: sql sql-server tsql

假设我有一个包含ABCDE等列的表,其中每列都是{{ 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的经验就是那么多列,性能成为一个严重的问题。有没有人有更好的主意?

2 个答案:

答案 0 :(得分:2)

您的解决方案是正确的。我没有看到更好的解决方案。

每列需要不同的行 ,因此您必须分别查询每个列。如果你有40列,那么40个CTE连接在一起。简单。

通常,您期望符合某些条件的行的整行,一行或一行或一列子列:不要期望单独查询每一列以获取与其他值无关的值行。

答案 1 :(得分:0)

我不确定以下文章是否仍与当前版本的MS SQL服务器相关,但您可以查看它

A Better NTILE