Новый месяц, новые цели. Ваша помощь помогает проекту двигаться вперед. 🖥️ Поддержите sqltest →
SQL код скопирован в буфер обмена

Набор данных 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_tripdata2 964 624поездки жёлтых такси

Структура таблиц

Нажмите на таблицу, чтобы увидеть её столбцы, пример строки и ключи.

Таблица yellow_tripdata

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 сбор аэропорта.
Структура таблицы yellow_tripdata
Имя столбца Тип NULL Ключ По умолчанию Дополнительно
VendorIDINTEGERYES[null][null][null]
tpep_pickup_datetimeTIMESTAMPYES[null][null][null]
tpep_dropoff_datetimeTIMESTAMPYES[null][null][null]
passenger_countBIGINTYES[null][null][null]
trip_distanceDOUBLEYES[null][null][null]
RatecodeIDBIGINTYES[null][null][null]
store_and_fwd_flagVARCHARYES[null][null][null]
PULocationIDINTEGERYES[null][null][null]
DOLocationIDINTEGERYES[null][null][null]
payment_typeBIGINTYES[null][null][null]
fare_amountDOUBLEYES[null][null][null]
extraDOUBLEYES[null][null][null]
mta_taxDOUBLEYES[null][null][null]
tip_amountDOUBLEYES[null][null][null]
tolls_amountDOUBLEYES[null][null][null]
improvement_surchargeDOUBLEYES[null][null][null]
total_amountDOUBLEYES[null][null][null]
congestion_surchargeDOUBLEYES[null][null][null]
Airport_feeDOUBLEYES[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_datetimeminutestrip_distancetotal_amount
2024-01-01 00:00:0020.311.25
2024-01-01 00:00:0241.5716.32
2024-01-01 00:00:0330.57.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_flagtrips
N2813126
NULL140162
Y11336

SQL-задачи по темам

Задач на этом наборе данных: 19 — от общей статистики до временных рядов и проверки качества данных. Решение проверяется автоматически на настоящей DuckDB. Число справа — количество задач в теме, цветные метки — диапазон сложности.

С чего начать

Первые задачи по базе NYC Yellow Taxi:

  1. Статистика поездок
  2. Средняя стоимость по способу оплаты
  3. Самые длинные поездки
  4. Ежемесячная статистика
  5. Самые популярные зоны посадки
  6. Сравните чаевые по типу оплаты
  7. Лучшие зоны посадки по месяцам
  8. Анализ поездок пассажиров
  9. Эффективность поездок по диапазону расстояний
  10. Зоны с необычно высокой стоимостью за милю

Все задачи по NYC Yellow Taxi →

Частые вопросы

Нужно ли устанавливать DuckDB, чтобы работать с этими данными?

Нет. Задачи и песочница на SQLtest.online выполняют запросы на сервере, достаточно браузера. В песочнице выберите DuckDB.

Откуда эти данные?

Из открытых данных Комиссии такси и лимузинов Нью-Йорка (TLC), которые публикуются каждый месяц в формате Parquet. В этой копии — поездки жёлтых такси за январь 2024 года.

Чем отличается SQL в DuckDB?

Он близок к PostgreSQL и дополнен возможностями для аналитики: GROUP BY ALL, QUALIFY, date_diff и функциями квантилей.