我有两张桌子a和b。表a具有像1,2,3,4,5等的id列表,表b的分数如
1,20
1,30
1,40
3,10
(20 30 40 10得分,而1和3是表a中的id)我想计算得分的平均值。我需要的结果应该是这样的:
average| id
-----------
20.45 | 1
30.15 | 2
60.45 | 3
现在平均值没有计算,只是一个例子。
这是我现在使用的查询,但它只给了我一个结果
QUERY:
select avg(score),id from b where id in (select id from a);
请帮我构建查询。
答案 0 :(得分:2)
尝试添加类似
的group by id
select avg(score),id from b group by id;
答案 1 :(得分:0)
我已经明确添加了您的“A”表,以防有其他元素,例如您希望从中获取信息的人名......
select
a.id,
avg( b.score )
from
YourTableA a
join YourTableB b
on a.id = b.id
group by
a.id
答案 2 :(得分:0)
像
这样的东西 select avg(score), a.id from a join b on a.id = b.id group by a.id;
一些有用的链接:
答案 3 :(得分:0)
这就是我在T-SQL中的表现...不是100%,这在MySQL中可行,但我认为它会。
SELECT SUM(Score)/COUNT(Score) As 'Average', ID
FROM b
GROUP BY ID
但是要以小数形式得到答案,您可能需要将一些数据类型从int转换为long。这就是我在SQL T服务器中的表现...这可能需要一些改变才能与MySQL一起工作但是给你一个想法:
SELECT CAST(CAST(SUM(Score) AS Decimal)/CAST(COUNT(Score) As Decimal)As Decimal(10,2)) As Average, ID
FROM b
GROUP BY ID
希望这会有所帮助。我没有使用AVG()因为它给了我整数结果。