Набор данных NYC Yellow Taxi (DuckDB): таблица yellow_tripdata и SQL-задачи
yellow_tripdata — поездки жёлтых такси Нью-Йорка за январь 2024 года, почти 3 миллиона строк, загруженные в DuckDB для аналитического SQL. На SQLtest.online с ними можно работать прямо в браузере: решать задачи с автоматической проверкой и писать свои запросы в песочнице, ничего не устанавливая.
- 1 таблица, 19 столбцов
- 2 964 624 поездки
- январь 2024
- 19 SQL-задачи
Что такое NYC Yellow Taxi
Данные взяты из записей о поездках, которые Комиссия такси и лимузинов Нью-Йорка (TLC) публикует каждый месяц. Каждая строка — одна поездка: время посадки и высадки, расстояние, число пассажиров, зоны посадки и высадки, способ оплаты и все составляющие стоимости.
DuckDB — встраиваемая аналитическая СУБД с колоночным хранением, поэтому агрегации по миллионам строк выполняются за доли секунды. На этих данных удобно тренировать настоящую аналитику: временные ряды, распределения, перцентили и очистку данных.
Из чего состоит база
Все данные лежат в одной таблице yellow_tripdata. Все столбцы допускают NULL, ключей и ограничений нет. PULocationID и DOLocationID — номера зон такси TLC. У нескольких поездок время посадки выходит за январь 2024 года, а у некоторых суммы нулевые или отрицательные: настоящие данные нужно чистить, и часть задач именно об этом.
Сколько данных в таблицах:
| Таблица | Строк | Что хранит |
|---|---|---|
| yellow_tripdata | 2 964 624 | поездки жёлтых такси |
Структура таблиц
Нажмите на таблицу, чтобы увидеть её столбцы, пример строки и ключи.
Таблица yellow_tripdata
- VendorID идентификатор поставщика сервиса такси.
- tpep_pickup_datetime дата и время посадки пассажира.
- tpep_dropoff_datetime дата и время высадки пассажира.
- passenger_count количество пассажиров.
- trip_distance расстояние поездки.
- RatecodeID идентификатор тарифного плана.
- store_and_fwd_flag признак хранения данных поездки перед отправкой.
- PULocationID идентификатор зоны посадки.
- DOLocationID идентификатор зоны высадки.
- payment_type идентификатор способа оплаты.
- fare_amount стоимость поездки без дополнительных сборов.
- extra дополнительные сборы.
- mta_tax налог MTA.
- tip_amount сумма чаевых.
- tolls_amount сумма платежей за платные дороги.
- improvement_surcharge сбор на улучшение транспортной системы.
- total_amount итоговая стоимость поездки.
- congestion_surcharge сбор за дорожную загруженность.
- Airport_fee сбор аэропорта.
| Имя столбца | Тип | NULL | Ключ | По умолчанию | Дополнительно |
|---|---|---|---|---|---|
| VendorID | INTEGER | YES | [null] | [null] | [null] |
| tpep_pickup_datetime | TIMESTAMP | YES | [null] | [null] | [null] |
| tpep_dropoff_datetime | TIMESTAMP | YES | [null] | [null] | [null] |
| passenger_count | BIGINT | YES | [null] | [null] | [null] |
| trip_distance | DOUBLE | YES | [null] | [null] | [null] |
| RatecodeID | BIGINT | YES | [null] | [null] | [null] |
| store_and_fwd_flag | VARCHAR | YES | [null] | [null] | [null] |
| PULocationID | INTEGER | YES | [null] | [null] | [null] |
| DOLocationID | INTEGER | YES | [null] | [null] | [null] |
| payment_type | BIGINT | YES | [null] | [null] | [null] |
| fare_amount | DOUBLE | YES | [null] | [null] | [null] |
| extra | DOUBLE | YES | [null] | [null] | [null] |
| mta_tax | DOUBLE | YES | [null] | [null] | [null] |
| tip_amount | DOUBLE | YES | [null] | [null] | [null] |
| tolls_amount | DOUBLE | YES | [null] | [null] | [null] |
| improvement_surcharge | DOUBLE | YES | [null] | [null] | [null] |
| total_amount | DOUBLE | YES | [null] | [null] | [null] |
| congestion_surcharge | DOUBLE | YES | [null] | [null] | [null] |
| Airport_fee | DOUBLE | YES | [null] | [null] | [null] |
Примеры запросов
Эти запросы показывают, как связаны данные. Скопируйте любой и запустите в песочнице.
Длительность поездки — функция DuckDB date_diff между посадкой и высадкой:
SELECT tpep_pickup_datetime,
date_diff('minute', tpep_pickup_datetime, tpep_dropoff_datetime) AS minutes,
trip_distance, total_amount
FROM yellow_tripdata
WHERE tpep_pickup_datetime >= '2024-01-01'
ORDER BY tpep_pickup_datetime
LIMIT 3;
| tpep_pickup_datetime | minutes | trip_distance | total_amount |
|---|---|---|---|
| 2024-01-01 00:00:00 | 2 | 0.3 | 11.25 |
| 2024-01-01 00:00:02 | 4 | 1.57 | 16.32 |
| 2024-01-01 00:00:03 | 3 | 0.5 | 7.6 |
Быстрый подсчёт — GROUP BY ALL в DuckDB группирует по всем неагрегированным столбцам:
SELECT store_and_fwd_flag, COUNT(*) AS trips
FROM yellow_tripdata
GROUP BY ALL
ORDER BY trips DESC;
| store_and_fwd_flag | trips |
|---|---|
| N | 2813126 |
| NULL | 140162 |
| Y | 11336 |
SQL-задачи по темам
Задач на этом наборе данных: 19 — от общей статистики до временных рядов и проверки качества данных. Решение проверяется автоматически на настоящей DuckDB. Число справа — количество задач в теме, цветные метки — диапазон сложности.
С чего начать
Первые задачи по базе NYC Yellow Taxi:
- Статистика поездок
- Средняя стоимость по способу оплаты
- Самые длинные поездки
- Ежемесячная статистика
- Самые популярные зоны посадки
- Сравните чаевые по типу оплаты
- Лучшие зоны посадки по месяцам
- Анализ поездок пассажиров
- Эффективность поездок по диапазону расстояний
- Зоны с необычно высокой стоимостью за милю
Все задачи по NYC Yellow Taxi →
Частые вопросы
Нужно ли устанавливать DuckDB, чтобы работать с этими данными?
Нет. Задачи и песочница на SQLtest.online выполняют запросы на сервере, достаточно браузера. В песочнице выберите DuckDB.
Откуда эти данные?
Из открытых данных Комиссии такси и лимузинов Нью-Йорка (TLC), которые публикуются каждый месяц в формате Parquet. В этой копии — поездки жёлтых такси за январь 2024 года.
Чем отличается SQL в DuckDB?
Он близок к PostgreSQL и дополнен возможностями для аналитики: GROUP BY ALL, QUALIFY, date_diff и функциями квантилей.