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

查询撰写最多低于商家平均评分评论的用户:SQL语句校验与修正

SQL语句校验与修正

原SQL存在以下问题:

  • 字段名错误:reviews表中用户名字段为user_name,而非username;查询中多余的name字段(商家名称)不符合分组规则,严格SQL模式下会报错,且需求无需返回该字段。
  • JOIN写法错误:使用CROSS JOIN搭配ON条件属于不规范写法,此处应使用INNER JOIN来关联两张表(通过place_id与id匹配)。
  • 数据类型不匹配隐患:places表中average_rating字段定义为INT,但插入的是小数(如4.9),实际会被截断为整数,导致评分比较逻辑失效,需将该字段类型改为DECIMAL(3,1)这类支持小数的类型。

修正后的SQL语句:

SELECT r.user_name, COUNT(*) AS low_rating_review_count
FROM reviews r
INNER JOIN places p
  ON p.id = r.place_id
WHERE r.rating < p.average_rating
GROUP BY r.user_name
ORDER BY low_rating_review_count DESC
LIMIT 1;

额外说明:

  • 给表添加别名(r代表reviews,p代表places)让语句更简洁易读。
  • 给统计结果列起别名low_rating_review_count,语义更清晰。
  • 若存在多个用户并列第一的情况,LIMIT 1只会返回其中一个,若要返回所有并列用户,可改用窗口函数实现:
SELECT user_name, low_rating_review_count
FROM (
    SELECT r.user_name, COUNT(*) AS low_rating_review_count,
           RANK() OVER(ORDER BY COUNT(*) DESC) AS rank_num
    FROM reviews r
    INNER JOIN places p
      ON p.id = r.place_id
    WHERE r.rating < p.average_rating
    GROUP BY r.user_name
) AS ranked_reviews
WHERE rank_num = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:40:27