纽约黄色出租车数据集(DuckDB):yellow_tripdata 表和 SQL 练习
yellow_tripdata 收录了 2024 年 1 月纽约黄色出租车的行程,近 300 万行,已导入 DuckDB 用于分析型 SQL。 在 SQLtest.online 上,你可以直接在浏览器中查询这些数据:做自动判题的练习,或在练习场中运行自己的查询,无需安装任何软件。
- 1 张表,19 列
- 2,964,624 次行程
- 2024 年 1 月
- 19 道 SQL 练习
什么是 NYC Yellow Taxi
数据来自纽约市出租车和豪华轿车委员会(TLC)每月发布的行程记录。每一行是一次行程:上下车时间、距离、乘客人数、上下车区域、支付方式以及车费的各个组成部分。
DuckDB 是采用列式存储的嵌入式分析数据库,对数百万行的聚合只需不到一秒。因此这个数据集非常适合练习真正的数据分析:时间序列、分布、百分位数和数据清洗。
数据库包含什么
所有数据都在一张表 yellow_tripdata 中。所有列都允许 NULL,没有键和约束。PULocationID 和 DOLocationID 是 TLC 出租车区域编号。少数行程的上车时间不在 2024 年 1 月内,还有一些金额为零或负数:真实数据需要清洗,部分练习正是关于这一点。
各表的数据量:
| 表 | 行数 | 内容 |
|---|---|---|
| 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 |
快速计数:DuckDB 的 GROUP BY ALL 会按所有非聚合列分组。
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 上自动检查。 右侧数字是该主题的练习数量,彩色圆点表示难度范围。
- 分析查询 19
从哪里开始
NYC Yellow Taxi 数据库的前几道练习:
常见问题
使用这个数据集需要安装 DuckDB 吗?
不需要。SQLtest.online 的练习和练习场都在我们的服务器上执行查询,有浏览器就够了。在练习场中选择 DuckDB 即可。
数据从哪里来?
来自纽约市出租车和豪华轿车委员会(TLC)的开放行程数据,每月以 Parquet 文件发布。这个副本包含 2024 年 1 月的黄色出租车行程。
DuckDB 的 SQL 有什么不同?
它与 PostgreSQL 接近,并增加了用于分析的功能,例如 GROUP BY ALL、QUALIFY、date_diff 和分位数函数。