首页 > 解决方案 > 使用计数案例

问题描述

所以我只是在离开 SQL 一段时间后重新熟悉了它,我正在使用 Mode Analytics 示例数据仓库,他们在其中有一个 2014 年 SF 警察呼叫的数据集。

作为参考,它的设置如下:

incident_num, category, descript, day_of_week, date, time, pd_district, Resolution, address, ID

我要做的是计算一个类别的事件总数,以及所有被捕者的新列。理想情况下看起来像这样

Category,  Total_Incidents,  Arrested
-------------------------------------
Battery         10              4
Murder          200             5

之类的。。

到目前为止,我一直在尝试这个:

SELECT category, COUNT (Resolution) AS Total_Incidents, (
    Select COUNT (resolution)
    from tutorial.sf_crime_incidents_2014_01
    where Resolution like '%ARREST%') AS Arrested
from tutorial.sf_crime_incidents_2014_01
group by 1
order by 2 desc

这会正确返回事件总数,但对于 Arrested,它会不断打印出 9014 Arrest

知道我做错了什么吗?

标签: sqlmode-analytics

解决方案


子查询不相关。它只是选择所有行的计数。添加一个条件,检查类别是否等于外部查询的类别。

SELECT o.category,
       count(o.resolution) total_incidents,
       (SELECT count(i.resolution)
               FROM tutorial.sf_crime_incidents_2014_01 i
               WHERE i.resolution LIKE '%ARREST%'
                     AND i.category = o.category) arrested
       FROM tutorial.sf_crime_incidents_2014_01 o
       GROUP BY 1

推荐阅读