我有这样的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
答案 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
<强>演示强>
答案 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;
(如果你可以分享这两个表结构,那会更有帮助。我通常不会使用连接。这种方式对我来说更容易。只是我的观点)