2011-07-17 144 views
0

我有兩個表a和b。表一個具有像1,2,3,4,5等和表B的ID列表中有他們的評分一樣建立MYSQL查詢所需的幫助

1,20 
1,30 
1,40 
3,10 

(20 30 40 10是得分而1和3是從表一的ID)予想要計算得分的平均值。我需要的結果應該是這樣的:

average| id 
----------- 
20.45 | 1 
30.15 | 2 
60.45 | 3 

現在不能計算出的平均值,這只是一個例子。

這是我使用的是現在的查詢,但它給我只有1個結果

QUERY:

select avg(score),id from b where id in (select id from a); 

請幫我建立查詢。

回答

2

嘗試增加group by id

select avg(score),id from b group by id; 
+0

感謝您的建議 – Tia

+0

不客氣。還接受或投票有用的答案。 –

0

我已經明確地添加的情況下,還有其他因素,比如你想從他們的信息人的名字你的「A」表...

select 
     a.id, 
     avg(b.score) 
    from 
     YourTableA a 
     join YourTableB b 
      on a.id = b.id 
    group by 
     a.id 
+0

謝謝它的工作 – Tia

0

這是我會怎麼做它在T-SQL ...不是100%,這將在MySQL工作,但我認爲它會。

SELECT SUM(Score)/COUNT(Score) As 'Average', ID 
FROM b 
GROUP BY ID 

然而得到的答案回爲一個小數,你可能會做的數據類型的一些鑄造從int長。這是我怎麼會做它在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(),因爲它給了我整數結果。