(SQL)如何使用相同的ID对值进行平均

时间:2018-04-18 10:54:29

标签: sql

我有这样的SQL代码:

SELECT ID_song as ID, rate
FROM Songs
    JOIN Rating USING (ID_song)
order by ID_song;

输出是:

  ID ¦ rate  
 ----+------ 
  27 ¦ 10    
  28 ¦ 1     
  31 ¦ 4     
  31 ¦ 1     
  41 ¦ 7     
  41 ¦ 3     
  44 ¦ 1     
  44 ¦ 7     

我希望重复ID的平均费率总是有一个唯一ID,其平均值为rate,如下所示:

输出是:

  ID ¦ rate  
 ----+------ 
  27 ¦ 10    
  28 ¦ 1     
  31 ¦ 2.5   
  41 ¦ 5     
  44 ¦ 4       

4 个答案:

答案 0 :(得分:1)

查询

SELECT ID_song as ID, AVG(rate)
FROM Songs
    JOIN Rating USING (ID_song)
GROUP BY ID_song
order by ID_song;

AVG()Group By

的示例
SELECT ID,AVG(rate) FROM Table1
GROUP BY ID

<强>输出

ID  AVG(rate)
27  10
28  1
31  2.5
41  5
44  4

<强>演示

  

http://sqlfiddle.com/#!9/c17ddc/1

答案 1 :(得分:0)

使用avg和group by - 给定using子句我假设是oracle。

SELECT ID_song as ID, avg(rate)
FROM Songs
JOIN Rating USING (ID_song)
group by ID_song
order by ID_song;

理想情况下,使用正常的ansi语法进行连接,而不是使用语法。

答案 2 :(得分:0)

要计算平均值,请使用AVG() 并且一定要分组。

SELECT ID_song as ID, AVG(rate)
FROM Songs
    JOIN Rating USING (ID_song)
GROUP BY ID_song
order by ID_song;

答案 3 :(得分:0)

&LT;

Select Distinct(Id_song) as ID, avg(rate)
from songs,rating
where song.Id_song = rating.Id_song
order by song.Id_song

&GT;

(如果你可以分享这两个表结构,那会更有帮助。我通常不会使用连接。这种方式对我来说更容易。只是我的观点)