新月份,新目标。您的帮助使项目向前推进。 🖥️ 支持 sqltest →
SQL 代码已复制到剪贴板

纽约黄色出租车数据集(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_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

快速计数: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_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 年 1 月的黄色出租车行程。

DuckDB 的 SQL 有什么不同?

它与 PostgreSQL 接近,并增加了用于分析的功能,例如 GROUP BY ALL、QUALIFY、date_diff 和分位数函数。