Ниже должно работать
#standardSQL
SELECT
primary_type,
COUNT(arrest) arrest_total,
COUNTIF(year = 2015) AS arrests_2015,
COUNTIF(year = 2016) AS arrests_2016
FROM `bigquery-public-data.chicago_crime.crime`
WHERE arrest = TRUE
AND year BETWEEN 2001 AND 2018
AND primary_type NOT IN ('OTHER OFFENSE', ' all non-criminal types')
GROUP BY primary_type, arrest
Я думаю, что ваша проблема была в строке ниже, где вы выбрали ТОЛЬКО 2001 и 2018 вместо всех лет между (по крайней мере, 2015 и 2016)
AND year IN (2001, 2018)
Итак, вместо этого вы должны использовать ниже одного
AND year BETWEEN 2001 AND 2018
Также, если вы хотите включить не аресты, вы можете использовать ниже
#standardSQL
SELECT
primary_type,
arrest,
COUNT(arrest) arrest_total,
COUNTIF(year = 2015) AS arrests_2015,
COUNTIF(year = 2016) AS arrests_2016
FROM `bigquery-public-data.chicago_crime.crime`
WHERE year BETWEEN 2001 AND 2018
AND primary_type NOT IN ('OTHER OFFENSE', ' all non-criminal types')
GROUP BY primary_type, arrest
Примечание: я удалил WHERE arrest = TRUE
здесь и добавил arrest
в список SELECT
Вместо этих нескольких корректировок - ваш первоначальный запрос был совершенно правильным
Если вы хотите иметь одну выходную строку на primary_type
, вы можете использовать ниже
#standardSQL
SELECT
primary_type,
COUNTIF(arrest) arrests,
COUNTIF(NOT arrest) non_arrests,
COUNT(arrest) arrest_total,
COUNTIF(year = 2015) AS arrests_2015,
COUNTIF(year = 2016) AS arrests_2016
FROM `bigquery-public-data.chicago_crime.crime`
WHERE year BETWEEN 2001 AND 2018
AND primary_type NOT IN ('OTHER OFFENSE', ' all non-criminal types')
GROUP BY primary_type
Более того - если вы можете «увеличить» количество лет, как показано ниже (например, для 2015 года)
COUNTIF(year = 2015 AND arrest) AS arrests_2015,
COUNTIF(year = 2015 AND NOT arrest) AS non_arrests_2015,
Есть ли программный способ подсчета количества арестов с 2001 по 2018 год по типу преступления
#standardSQL
SELECT
primary_type,
year,
COUNTIF(arrest) arrests,
COUNTIF(NOT arrest) non_arrests,
COUNT(arrest) arrest_total
FROM `bigquery-public-data.chicago_crime.crime`
WHERE year BETWEEN 2001 AND 2018
AND primary_type NOT IN ('OTHER OFFENSE', ' all non-criminal types')
GROUP BY primary_type, year