You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL计算中位数时重复值未全部纳入的问题咨询

T-SQL中位数计算修正方案

问题出在你添加的GROUP BY ParishCode, ChangeDate, Listing_Price子句——它会将同一教区、同一日期下相同Listing_Price的房产行合并为一行,相当于丢失了重复价格的样本数据,导致PERCENTILE_CONT计算中位数时只考虑去重后的价格,结果自然出现偏差。

修正方法:移除不必要的GROUP BY

PERCENTILE_CONT是窗口函数,本身通过OVER (PARTITION BY ParishCode, ChangeDate)已经完成了按教区和日期的分组计算,不需要提前用GROUP BY聚合数据。直接基于原始房产级数据计算即可:

Medians AS (
    SELECT
        ParishCode AS PAR21CD,
        ChangeDate AS 'Month Start',
        PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY Listing_Price) OVER (PARTITION BY ParishCode, ChangeDate) AS Median_Rent
    FROM
        Joined
)

优化:返回唯一的教区-日期中位数结果

如果需要每个教区+日期只返回一行中位数(避免原始数据行重复导致结果行重复),可以在外层查询添加DISTINCT:

SELECT DISTINCT
    PAR21CD,
    [Month Start],
    Median_Rent
FROM Medians

或者直接合并为一个查询:

SELECT DISTINCT
    ParishCode AS PAR21CD,
    ChangeDate AS [Month Start],
    PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY Listing_Price) OVER (PARTITION BY ParishCode, ChangeDate) AS Median_Rent
FROM Joined

补充说明

如果需要离散型中位数(从现有价格中取实际值),可以替换为PERCENTILE_DISC(0.5),但核心逻辑一致:不要提前对Listing_Price做去重分组,确保所有房产样本都被纳入计算。

内容的提问来源于stack exchange,提问作者GlassShark1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:42:28