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

如何不使用GROUP BY实现COUNT()与聚合计算以生成NPS分数

无需临时表/子查询的NPS统计方案

直接用条件聚合就能搞定,不需要折腾临时表或者容易出错的PIVOT,而且只需要一次分组,能有效降低Tableau的数据源处理负载:

SELECT
  service,
  office,
  -- 统计贬损者数量(0-6分)
  SUM(CASE WHEN score BETWEEN 0 AND 6 THEN 1 ELSE 0 END) AS detractors,
  -- 统计被动者数量(7-8分)
  SUM(CASE WHEN score BETWEEN 7 AND 8 THEN 1 ELSE 0 END) AS passives,
  -- 统计推荐者数量(9-10分)
  SUM(CASE WHEN score BETWEEN 9 AND 10 THEN 1 ELSE 0 END) AS promoters,
  -- 总回答数
  COUNT(*) AS total_responses,
  -- 计算NPS分数,*1.0避免整数除法,ROUND控制精度
  ROUND(
    (SUM(CASE WHEN score BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 / COUNT(*)) 
    - (SUM(CASE WHEN score BETWEEN 0 AND 6 THEN 1 ELSE 0 END) * 1.0 / COUNT(*)),
    4
  ) AS NPS_score
FROM customer_survey
GROUP BY service, office;

方案优势:

  • 无需临时表或嵌套子查询,一次查询直接输出所有统计字段,减少数据库与Tableau的中间计算环节
  • 比PIVOT更通用——不同数据库的PIVOT语法差异极大,条件聚合在MySQL、PostgreSQL、SQL Server等主流环境下都能直接运行
  • 逻辑直观,后续调整分数区间或统计规则时,修改对应CASE语句即可,维护成本低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:31:04