0

我正在努力弄清楚如何获得 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 可用于查找每个值属于哪个四分位数,但我正在努力将它们放在一起

4

1 回答 1

2

确实,您可以使用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<>小提琴

于 2021-08-26T15:47:16.083 回答