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

如何在BigQuery中按年份统计各primary_type犯罪的发生次数?

问题解答

报错原因分析

你写的查询报错,是因为SELECT DISTINCT仅返回primary_type列,year列不在最终结果集中,因此ORDER BY无法引用该列,这就是报错信息提示的核心原因。

需求实现方案

你的真实需求是统计每种犯罪类型每年的发生次数,不需要使用子查询,直接通过GROUP BY分组统计即可,这是最直接高效的写法:

SELECT
  primary_type,
  year,
  COUNT(*) AS crime_count
FROM `bigquery-public-data.chicago_crime.crime`
GROUP BY primary_type, year
ORDER BY primary_type, year

语句说明

  • GROUP BY primary_type, year:将数据按犯罪类型(primary_type)和年份(year)进行分组,每个分组对应某一类型在某一年的所有犯罪记录
  • COUNT(*) AS crime_count:统计每个分组内的记录数量,即该类型当年的犯罪次数
  • ORDER BY primary_type, year:按犯罪类型和年份排序,让结果更易读

子查询练习写法(非必需)

如果只是为了练习子查询的使用,也可以将分组逻辑放到子查询中,但这属于冗余操作,实际场景不推荐:

SELECT
  primary_type,
  year,
  crime_count
FROM (
  SELECT
    primary_type,
    year,
    COUNT(*) AS crime_count
  FROM `bigquery-public-data.chicago_crime.crime`
  GROUP BY primary_type, year
) AS subquery
ORDER BY primary_type, year

内容的提问来源于stack exchange,提问作者Krsna's Shinobi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:32:35