在MYSQL中的GROUP BY之后得到AVG()

时间:2017-08-22 07:19:32

标签: sql mysqli

我刚开始学习MYSQL并遇到像这样的问题

所以表格是这样的:
id name moneySpent 1 Alex 3 2 Alex 1 3 Bill 4 4 Alex 2 5 Alex 1 6 Chris 5 7 Chris 3 让我们说我想知道每人平均花费的钱。我试着通过使用SUM()GROUP BY和AVG()来做到这一点,但我被困在AVG()

SELECT name, sum(moneySpent) AS total FROM table GROUP BY name;

然后这将返回

name  total
Alex  7
Bill  4
Chris 8

然后如何使用AVG()获得(7 + 4 + 8)/ 3?

4 个答案:

答案 0 :(得分:3)

您可以使用以下方式获得每人的平均值:

SELECT AVG(total) AS AVERAGE 
FROM (SELECT name, sum(moneySpent) AS total 
      FROM table GROUP BY name) A
    ;

输出:

AVERAGE
6,3333

答案 1 :(得分:1)

您可以使用内部查询获取sum,使用外部查询从总和中获取average,如下所示。

SELECT  Avg(sum1) FROM  (
SELECT  Sum(amount) AS sum1
FROM table1
GROUP BY NAME
) T1

它将生成以下输出。

AVERAGE_AMOUNT_SPENT
------------------
6.3333

您希望成为输出,即(7+4+8)/3 = 6.333

您可以查看演示here

答案 2 :(得分:0)

所以有两种方法可以做到这一点,首先是使用一个新表来存储SELECT结果。它更加重要但可能需要更多空间。 第二个是jarlh,对我来说,我不需要GROUP BY整个表,我可以添加所有moneySpent并按不同的名称计数除以。 谢谢大家!

答案 3 :(得分:0)

select avg(total) as average from (SELECT name, sum(moneySpent) AS total FROM table GROUP BY name);

您可以使用此查询获取所需的输出

OUTPUT: AVERAGE 6.3333333333333333