所有值和单独组的平均值
Posted
技术标签:
【中文标题】所有值和单独组的平均值【英文标题】: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,因此我需要以这种形式使用它,以便能够比较组平均值与总平均值。
也欢迎任何其他解决方案或建议。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于所有值和单独组的平均值的主要内容,如果未能解决你的问题,请参考以下文章