为分组数据计算 SQL 中的 LQ、UQ 和 IQR
Calculating LQ, UQ and IQR in SQL for grouped data
我正在努力研究如何获得 SQL 中分组数据的 upper/lower 四分位数和 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 的数据列中获取 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 可用于查找每个值属于哪个四分位数,但我正在努力将它们放在一起[=13=]
确实,您可以使用 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;
我正在努力研究如何获得 SQL 中分组数据的 upper/lower 四分位数和 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 的数据列中获取 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 可用于查找每个值属于哪个四分位数,但我正在努力将它们放在一起[=13=]
确实,您可以使用 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;