【问题标题】:Average of all values and separate groups所有值和单独组的平均值
【发布时间】:2020-04-07 16:48:18
【问题描述】:

如何计算所有值和每个组的列的平均值? 想象一下,我有:

+-----+-----+
| val | grp |
+-----+-----+
|  1  |  A  |
+-----+-----+
|  3  |  A  |
+-----+-----+
|  2  |  B  |
+-----+-----+
|  2  |  B  |
+-----+-----+
|  5  |  C  |
+-----+-----+
|  1  |  C  |
+-----+-----+

我想要的结果是:

+-------+-----+
|  val  | grp |
+-------+-----+
| 2.333 | all |
+-------+-----+
|   2   |  A  |
+-------+-----+
|   2   |  B  |
+-------+-----+
|   3   |  C  |
+-------+-----+

这里我们有每个组的平均值和所有组的平均值。

有什么好的方法吗?我知道这样做是不可取的,但由于我使用的是 Metabase,因此我需要以这种形式使用它,以便能够比较组平均值与总平均值。

也欢迎任何其他解决方案或建议。

【问题讨论】:

    标签: sql postgresql metabase


    【解决方案1】:

    在 Postgres 中,你可以使用grouping sets:

    select grp, avg(val)
    from t
    group by grouping sets ( (grp), () );
    

    【讨论】:

      【解决方案2】:

      使用union

        Select avg(value), 'all' from table
        Union 
        Select avg(value), grp from table 
        Group by grp
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-27
        • 2021-12-09
        • 2016-02-20
        • 1970-01-01
        • 2020-05-06
        • 2013-03-21
        • 2015-09-29
        相关资源
        最近更新 更多