我刚开始学习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?
答案 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