如何构建一个基于另一列平均分数的查询

时间:2017-08-13 22:52:25

标签: javascript mysql

现在我有一个表“uniqueids”,看起来像:

+----+-----------------+------+-------+------------+
| id | uniqueid        | name | score | date       |
+----+-----------------+------+-------+------------+
|  1 | bob1            | bob  |     4 | 02-10 |
|  2 | bob2            | bob  |    49 | 02-15 |
|  3 | bob3            | bob  |    48 | 03-01 |
|  4 | cari1           | cari |    76 | 02-15 |
|  5 | cari2           | cari |    60 | 02-16 |
|  6 | cari3           | cari |    71 | 03-05 |
|  7 | john1           | john |    54 | 01-05 |
|  8 | john2           | john |    56 | 02-13 |
|  9 | john3           | john |    53 | 03-13 |
+----+-----------------+------+-------+------------+

我想要的是取每个名字的平均分数。所以最后我会得到以下内容:

+----+---------
|name  | score |
+----+---------
|bob   |  33.6 |
|cari  |  69   |
|john  |  54.3 |
---------------

以后可能会有更多名称添加到数据库中,但是现在我一直专注于为一个名称执行此操作。我在一个名字上的进展如下:

'来自uniqueids的SELECT *,其中name ='bob'和SELECT AVG(score)'但这对我不起作用,它只是提到我的语法错误。即使它确实如此,它也只会用于bob,而我需要为每个名字完成它。

关于如何将此查询提供到我需要的地方的任何想法?

2 个答案:

答案 0 :(得分:2)

这是一个非常标准的SQL查询。您只需要将avg函数与适当的group by子句(以及where子句组合,如果您想将结果限制为特定名称)。

select name, avg(score) as "average score"
from uniqueids 
where name = 'bob' -- remove this line if you want averages for all names
group by name

Sample SQL Fiddle

答案 1 :(得分:0)

选择名称,平均(得分)分数 来自uniqueids 按名称分组; 这有助于你得到理想的答案。