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

SQL统计异常求助:按分类统计警情总数及逮捕数结果不符

问题排查与修正方案

嘿,我一眼就瞅出你SQL里的问题啦!你的Arrested列始终返回9014,是因为子查询没有和主查询的category做关联——这个子查询会直接统计整个数据集里所有带ARREST的事件总数,完全不管主查询当前分组的是哪个分类,所以每个分类的Arrested都显示同一个全局总数。

两种修正方法

方法1:条件聚合(推荐,更简洁高效)

不用子查询,直接用CASE语句配合COUNT实现按分类统计逮捕事件数:

SELECT 
  category,
  COUNT(Resolution) AS Total_Incidents,
  COUNT(CASE WHEN Resolution LIKE '%ARREST%' THEN 1 END) AS Arrested
FROM tutorial.sf_crime_incidents_2014_01
GROUP BY category
ORDER BY Total_Incidents DESC;

原理:当Resolution包含ARREST时,CASE返回1,否则返回NULL;而COUNT会自动忽略NULL值,这样就精准统计了每个分类下的逮捕事件数。

方法2:关联子查询(如果偏好子查询写法)

给主表和子表起别名,让子查询只统计当前分类下的逮捕事件:

SELECT 
  category,
  COUNT(Resolution) AS Total_Incidents,
  (SELECT COUNT(resolution) 
   FROM tutorial.sf_crime_incidents_2014_01 sub
   WHERE sub.category = main.category
     AND sub.Resolution LIKE '%ARREST%') AS Arrested
FROM tutorial.sf_crime_incidents_2014_01 main
GROUP BY category
ORDER BY Total_Incidents DESC;

原理:通过sub.category = main.category把主查询的当前分类和子查询关联起来,子查询只会返回和当前分类匹配的逮捕事件数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:14:44