我正在尝试在表格中的一列值上运行PERCENTILE_DISC
以获取其中位数。我注意到该函数有一个强制分区子句,我想知道是否有办法不使用它。我只对整列的中位数感兴趣,而不是其他一些分类的值的子集。我甚至尝试过这个黑客试图获得my_value
的中位数:
SELECT
PERCENTILE_DISC (0.5)
WITHIN GROUP (ORDER BY my_value)
OVER (PARTITION BY NULL)
FROM
my_table
但是我的桌子长度只有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不提供此功能作为聚合函数。