我是个初学者,请耐心等待。
我试图从一个表中获取 ID 号,以指向另一个表中的相同号码,该表保存一个名称值(即 rating.id 1 = names.id 1 和 names.name“bread”),我似乎已经做到了。然后我想在名称旁边显示平均评级,即取所有 rating.rate 值(范围从 1-5)并平均评级,并将其显示在产品旁边,然后订购 desc。例如:
name-------average rating
Coffee-----4.3
Bread------3.2
Cheese-----2.9
etc
到目前为止,它为我提供了所有产品名称,但显示产品名称的次数与评级相同,然后排名降序。没有多大用处。这就是我所拥有的:
SELECT rating.rate, names.name FROM rating INNER JOIN names ON rating.id = names.id ORDER BY rating.rate DESC LIMIT 0, 25 GROUP BY names.name
感谢您的帮助!
最佳答案
您的示例似乎根本没有使用 AVG 函数?下面的怎么样?
SELECT AVG(rating.rate) as avg_rating, names.name
FROM rating
JOIN names
ON rating.id = names.id
GROUP BY names.name
ORDER BY avg_rating DESC
LIMIT 0, 25
由于 GROUP BY,这将平均每个名称的评分。 AVG 的结果放入 avg_ rating 中并在 ORDER BY 中使用。
关于MYSQL - 如何平均从内部连接表结果返回的投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478209/