You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL关联表计算平均评分并按评分与投票数排序的技术问询

如何计算用户平均评分并按规则排序?

嘿,我来帮你搞定这个评分统计的需求!先理清楚你的两张表结构:

表结构展示

members表

IDname
1Andrew
2Anthony
3John
4Jane

member_ratings表

IDid_gave_ratingid_ratedrating
1121
2234
3343
4425

你当前的SQL语句只是关联了两张表,但还没做聚合统计。要实现按平均评分从高到低、投票数排序的需求,我们需要用到聚合函数和分组查询,调整后的SQL如下:

SELECT 
    m.id_rated,
    AVG(m.rating) AS avg_rating,
    COUNT(*) AS votes
FROM member_ratings AS m
-- 如果需要显示被评分用户的名字,可以加入下面的JOIN语句
-- JOIN members AS c1 ON m.id_rated = c1.id
GROUP BY m.id_rated
ORDER BY avg_rating DESC, votes DESC;

语句解释

  • GROUP BY m.id_rated:按照被评分用户的ID分组,这样我们能单独计算每个用户的评分数据
  • AVG(m.rating) AS avg_rating:计算每组(每个被评分用户)的平均评分
  • COUNT(*) AS votes:统计每个用户获得的投票总数
  • ORDER BY avg_rating DESC, votes DESC:先按平均评分从高到低排序,当平均评分相同时,按投票数从多到少排序,完全匹配你想要的排序规则

执行后得到的结果

id_ratedavg_ratingvotes
34.01
23.02
43.01

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 19:13:03