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

如何在SQL查询中计算列平均值并查询产品名称、平均星级与最新评价日期

产品评分查询修正方案

现有SQL的问题

  • INNER JOIN未指定关联条件,会触发两张表的全量笛卡尔积匹配,结果完全不符合预期
  • 缺失需求要求的「最新评价日期」统计逻辑
  • 未对产品维度做分组,聚合函数AVG(rating_stars)会将所有产品的评分合并计算,无法得到单个产品的平均星级
  • 表结构定义中存在小问题:rating表的外键引用的是Products表,但实际创建的产品表名为product,如果你的数据库对表名大小写敏感,需要先修正此处的拼写不一致问题,否则关联会报错。

符合需求的查询语句

SELECT 
    p.product_name,
    AVG(r.rating_stars) AS average_rating,
    MAX(r.rating_date) AS latest_rating_date
FROM rating r
INNER JOIN product p 
    ON r.prod_id = p.prod_id
-- 如果需要展示从未收到过评价的产品,把上面的INNER JOIN改成LEFT JOIN即可
GROUP BY p.prod_id, p.product_name
ORDER BY average_rating DESC;

逻辑说明

  • 用ON r.prod_id = p.prod_id指定两张表的关联关系,保证产品和对应评价正确匹配
  • 用MAX(r.rating_date)统计每个产品的最新评价日期
  • 按产品主键prod_id和产品名称分组,保证聚合计算的是单产品的维度数据,也符合大多数SQL模式的分组规范
  • 按照计算出来的平均星级别名average_rating做降序排序,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:02