首页 > 解决方案 > 获取按组分隔的列的平均值

问题描述

所以我有一个查询,它产生如下表,没有 avg 列。我试图弄清楚如何添加 avg 列。平均值应该是当月所有店铺的利润。我假设我需要将 AVG 与 group by 子句一起使用,但似乎无法正确使用。

我想我可以使用子查询来获取每个月的行并对其进行平均,但是我并不总是知道表中的月数。

| store_id | month   | profit | avg|
------------------------------------
| 01       | Jan     | 100    | 200|
| 02       | Jan     | 200    | 200|
| 03       | Jan     | 300    | 200|
| 01       | Feb     | 250    | 250|
| 02       | Feb     | 200    | 250|
| 03       | Feb     | 300    | 250|
| 01       | Mar     | 150    | 100|
| 02       | Mar     | 50     | 100|
| 03       | Mar     | 100    | 100|

标签: mysql

解决方案


您可以使用此查询来做到这一点。Select语句中的Select语句。

SELECT *, (SELECT SUM(profit)/COUNT(*) FROM tbl1 WHERE t.`month`=tbl1.`month`) AS ave FROM tbl1 t;

或者

SELECT *, (SELECT AVG(profit) FROM tbl1 WHERE t.`month`=tbl1.`month`) AS ave FROM tbl1 t;

结果

在此处输入图像描述


推荐阅读