在构建MYSQL查询时需要帮助
我有两张桌子a和b。表a有id列表,如1、2、3、4、5等,表b有分数,如在构建MYSQL查询时需要帮助,mysql,Mysql,我有两张桌子a和b。表a有id列表,如1、2、3、4、5等,表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 目前还没有计算平均数,这只是一个例子 这是我现在使用的查询,但它只给我一个结果 查询: select avg(score),id from b wh
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
目前还没有计算平均数,这只是一个例子
这是我现在使用的查询,但它只给我一个结果
查询:
select avg(score),id from b where id in (select id from a);
请帮助我建立查询。尝试添加
按id分组
select avg(score),id from b group by id;
我已经明确添加了您的“A”表,以防有其他元素,例如您想从中获取信息的人名
select
a.id,
avg( b.score )
from
YourTableA a
join YourTableB b
on a.id = b.id
group by
a.id
差不多
select avg(score), a.id from a join b on a.id = b.id group by a.id;
一些有用的链接:
这就是我在T-SQL中的实现方式。。。不是100%的人认为这在MySQL中可以工作,但我认为它会
SELECT SUM(Score)/COUNT(Score) As 'Average', ID
FROM b
GROUP BY ID
然而,要以十进制形式返回答案,您可能需要将数据类型从int转换为long。这就是我在SQL T-server中的工作方式。。。这可能需要进行一些更改才能使用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(),因为它给了我整数结果