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

SQL按response字段划分区间统计时所有记录均归入0-5区间问题排查

错误原因
  • 核心问题出在GROUP BY 'range'这一行:SQL中单引号用于标识字符串字面量,你这里用单引号包裹别名range,数据库会认为你要按照固定的字符串常量'range'做分组,所有行都属于同一个分组,不会按你计算出的区间值拆分统计。
  • 在未开启ONLY_FULL_GROUP_BY模式的MySQL环境下,分组后SELECT的CASE结果会默认取分组内第一行的计算值,所以才会出现所有119条记录都被统计到第一个区间的异常结果。
修正方案

把GROUP BY后的单引号去掉,使用反引号包裹别名(避免和SQL保留关键字range冲突)即可,修正后的SQL如下:

SELECT
CASE 
WHEN response BETWEEN 0 AND 5 then '0 - 5'
WHEN response BETWEEN 6 AND 10 then '6 - 10'
else 'over 10'
end AS `range`,
COUNT(*) as `count`
FROM(
    SELECT datediff(MIN(referral_interventions.dateOfintervention), referral.referralDate) as response
    from referral
    LEFT JOIN referral_interventions on referral.refid =referral_interventions.refID
    LEFT JOIN interventions on referral_interventions.typeOfintervention = interventions.intid
    WHERE referral.referralDate > '2021-11-01'
    GROUP BY referral.refid
) AS tempdiff
GROUP BY `range`;
补充说明

range和count都属于SQL的保留关键字,作为别名使用时建议用反引号(MySQL)或者双引号(PostgreSQL、SQL Server等标准SQL环境)包裹,避免不必要的语法冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:24:04