【问题标题】:Calculating LQ, UQ and IQR in SQL for grouped data在 SQL 中为分组数据计算 LQ、UQ 和 IQR
【发布时间】: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 可用于查找每个值属于哪个四分位数,但我正在努力将它们放在一起

【问题讨论】:

    标签: sql sql-server group-by quartile


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 2012-01-25
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多