繁体   English   中英

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

[英]SQL Server: PERCENTILE_DISC for column median without partitioning

我正在尝试在表中的值列上运行PERCENTILE_DISC以获取其中位数。 我注意到该函数有一个强制性的分区子句,我想知道是否有一种方法不使用它。 我只对整个列的中位数感兴趣,而对其他类别的值的子集不感兴趣。 我什至尝试使用此技巧来获取my_value的中位数:

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

但是,我得到的矢量是我桌子长度的1s。 有没有一种方法可以只获得列中位数而不进行分区?

正常方法是使用:

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不提供此功能作为聚合功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM