Я использую google-bigquery
в наборе криминальных данных Чикаго.Однако я хочу выяснить наиболее частый тип преступления из столбца primary_type
для каждого отдельного block
.Для этого я захожу по standardSQL
.
Данные:
Поскольку данные о преступности в Чикаго достаточно велики, существует официальный сайт, где вы можете просмотретьнабор данных: данные о преступности в облаке Google
Мой текущий стандартный SQL:
SELECT primary_type,block, COUNT(*) as count
FROM `bigquery-public-data.chicago_crime.crime`
HAVING COUNT(*) = (SELECT MAX(count)
FROM (SELECT primary_type, COUNT(*) as count FROM `bigquery-public-data.chicago_crime.crime` GROUP BY primary_type, block) `bigquery-public-data.chicago_crime.crime`)
Проблема моего приведенного выше запроса состоит в том, что он имеетошибка сейчас, и для меня этот запрос довольно неэффективен, даже если я исправил ошибку.Как я могу исправить и оптимизировать приведенный выше запрос?
Как работать с регулярным выражением в стандартном SQL:
Чтобы подсчитать наиболее частый тип для каждого блока, включая оба северныха на юге я должен иметь дело с regex
, например, 033XX S WOOD ST
, я должен получить только S WOOT ST
и 033XX N WOOD ST
.Мне нужно получить N WOOD ST
и подсчитать за них.Как я могу это сделать?
желаемый выход:
В моем желаемом выходе, Для каждого блока, например, на WOOD ST (North (N WOOD ST)
и South(S WOOD ST))
.Я хочу найти наиболее частый тип преступления.В моем конечном выводе я ожидаю три столбца, такие как block
, primary_type
, count
.Есть ли способ сделать это с google-bigquery
?