SQL Server:PERCENTILE_DISC用于列中位数而不进行分区

时间:2018-03-19 17:23:55

标签: sql sql-server window-functions

我正在尝试在表格中的一列值上运行PERCENTILE_DISC以获取其中位数。我注意到该函数有一个强制分区子句,我想知道是否有办法不使用它。我只对整列的中位数感兴趣,而不是其他一些分类的值的子集。我甚至尝试过这个黑客试图获得my_value的中位数:

SELECT
    PERCENTILE_DISC (0.5)
    WITHIN GROUP (ORDER BY my_value) 
    OVER (PARTITION BY NULL)
FROM
    my_table

但是我的桌子长度只有1的向量。有没有办法在没有分区的情况下获得列中位数?

1 个答案:

答案 0 :(得分:2)

正常的方法是使用:

SELECT PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY my_value) OVER ()
FROM my_table;

如果您只想要一行:

SELECT DISTINCT PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY my_value) OVER ()
FROM my_table;

不幸的是,SQL Server不提供此功能作为聚合函数。