SQL 服务器:PERCENTILE_DISC 用于未分区的列中位数
SQL Server: PERCENTILE_DISC for column median without partitioning
我正在尝试 运行 PERCENTILE_DISC
table 中的一列值来获取它们的中位数。我注意到该函数有一个强制分区子句,我想知道是否有办法不使用它。我只对整个列的中位数感兴趣,而不是其他一些分类值的子集。我什至尝试了这个 hack 来尝试获得 my_value
:
的中位数
SELECT
PERCENTILE_DISC (0.5)
WITHIN GROUP (ORDER BY my_value)
OVER (PARTITION BY NULL)
FROM
my_table
但刚得到一个长度为 1 的矢量 table。有没有办法只得到一个列的中位数而不用分区?
正常的方法是使用:
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服务器不提供此聚合功能。
我正在尝试 运行 PERCENTILE_DISC
table 中的一列值来获取它们的中位数。我注意到该函数有一个强制分区子句,我想知道是否有办法不使用它。我只对整个列的中位数感兴趣,而不是其他一些分类值的子集。我什至尝试了这个 hack 来尝试获得 my_value
:
SELECT
PERCENTILE_DISC (0.5)
WITHIN GROUP (ORDER BY my_value)
OVER (PARTITION BY NULL)
FROM
my_table
但刚得到一个长度为 1 的矢量 table。有没有办法只得到一个列的中位数而不用分区?
正常的方法是使用:
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服务器不提供此聚合功能。