构建MYSQL查询所需的帮助

时间:2011-07-17 13:50:05

标签: mysql

我有两张桌子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);

请帮我构建查询。

4 个答案:

答案 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;

一些有用的链接:

  1. http://dev.mysql.com/doc/refman/5.0/en/select.html
  2. http://dev.mysql.com/doc/refman/5.0/en/join.html

答案 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()因为它给了我整数结果。