在 SQL 中为分组数据计算 LQ、UQ 和 IQR
Posted
技术标签:
【中文标题】在 SQL 中为分组数据计算 LQ、UQ 和 IQR【英文标题】:Calculating LQ, UQ and IQR in SQL for grouped data 【发布时间】:2021-10-26 15:38:48 【问题描述】:我正在努力弄清楚如何获得 SQL 中分组数据的上/下四分位数和 IQR。假设我有一些类似于以下的数据:
ID Data
1 21
1 37
1 86
1 1
1 34
1 77
2 5
2 15
2 29
3 12
3 76
3 54
3 10
我希望能够从每个 ID 的 Data 列中获取 LQ、UQ 和 IQR,如下所示:
ID LQ UQ IQR
1 24.25 67.0 42.75
2 10.00 22.0 12.00
3 11.50 59.5 48.00
到目前为止,我发现的所有内容都没有查看分组位。我知道 PERCENTILE_COUNT 可用于查找每个值属于哪个四分位数,但我正在努力将它们放在一起
【问题讨论】:
【参考方案1】:确实,您可以使用PERCENTILE_CONT
获取此信息。然后你做一个简单的分组
SELECT
ID,
LQ,
UQ,
IQR = UQ - LQ
FROM (
SELECT
ID,
LQ = PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY Data) OVER (PARTITION BY ID),
UQ = PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY Data) OVER (PARTITION BY ID)
FROM YourTable t
) t
GROUP BY ID, LQ, UQ;
db<>fiddle
【讨论】:
以上是关于在 SQL 中为分组数据计算 LQ、UQ 和 IQR的主要内容,如果未能解决你的问题,请参考以下文章