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

SQL如何按office_name分组统计各rating等级的对应记录数

SQL修改方案

原语句存在的问题

  • 字段/表名不匹配:原表为tbl_rating,办公字段为office_name,原语句错误使用了office、tbl_result
  • 语法错误:DISTINCT office后缺少逗号分隔后续查询字段
  • 逻辑错误:子查询未关联对应办公室维度,统计结果是全表的满意度总数,无法按办公室拆分

正确实现语句

使用条件聚合的行转列写法,兼容绝大多数SQL数据库(MySQL、PostgreSQL、SQL Server等):

SELECT 
  office_name,
  COUNT(CASE WHEN rating = 'Satisfied' THEN 1 END) AS Satisfied,
  COUNT(CASE WHEN rating = 'Neutral' THEN 1 END) AS Neutral,
  COUNT(CASE WHEN rating = 'Unsatisfied' THEN 1 END) AS Unsatisfied
FROM tbl_rating
GROUP BY office_name
ORDER BY office_name;

语句说明

  • 用GROUP BY office_name按办公室分组,自动得到去重后的办公室列表,不需要额外加DISTINCT
  • CASE WHEN匹配对应满意度评级,匹配成功返回值,不匹配返回NULL,COUNT函数会忽略NULL值,最终统计出每个办公室对应评级的数量

如果是MySQL环境,可以用更简洁的IF函数写法:

SELECT 
  office_name,
  SUM(IF(rating='Satisfied',1,0)) AS Satisfied,
  SUM(IF(rating='Neutral',1,0)) AS Neutral,
  SUM(IF(rating='Unsatisfied',1,0)) AS Unsatisfied
FROM tbl_rating
GROUP BY office_name
ORDER BY office_name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:36:03