← All projects

SQL analytics · Case study

Toronto Crime SQL Analytics

Turning a decade of Toronto police reports into reproducible questions and a public dashboard.

Toronto crime dashboard with yearly trends and neighbourhood charts

At a glance

  1. City open data
  2. DuckDB + 20 SQL questions
  3. Generated tables + 4 charts
  4. Findings + dashboard

The problem

A large open dataset invites striking claims, but row counts, partial years and neighbourhood rates can mislead without careful definitions.

My role

Independent project. I framed the questions, wrote the SQL, built the DuckDB workflow and published the findings and dashboard.

Key decision

I kept one query per question and generated result tables alongside four charts. I separated incident rows from distinct police events and excluded partial 2025 data from year-over-year comparisons.

Outcome

The 22 September 2026 snapshot contains 452,949 incident rows from 2014–2025. One finding: auto theft rose 243% from 2017 to 2023, then fell 23% in 2024.

Limits

These are police-reported incidents, not a measure of all crime. A single event can produce multiple offence rows, and 2021 population denominators can overstate per-resident rates in busy downtown areas.

See the work

The repository contains the source, setup instructions and the evidence behind these results.

← Back to projectsGet in touch →