请求解释Citibike骑行数据SQL查询的执行逻辑
这段Citibike骑行数据SQL查询的工作原理解析
这段SQL是从纽约Citibike的公开骑行数据集中,统计不同用户类型下最热门的10条骑行路线,同时算出每条路线的总骑行次数和平均骑行时长(分钟)。下面拆解开每部分细节:
1. 数据来源
FROM bigquery-public-data.new_york.citibike_trips``
指定查询的数据源是BigQuery平台上的公开数据集bigquery-public-data.new_york.citibike_trips,里面存的是纽约Citibike的所有骑行记录。
2. 输出字段说明
usertype:直接输出用户类型(一般分为订阅用户、临时用户两类)CONCAT(start_station_name, " to ", end_station_name) AS route
用CONCAT函数把起点站和终点站的名称拼接成「起点 to 终点」的格式,给这个拼接后的字段起名叫route,用来代表一条完整的骑行路线COUNT(*) as num_trips
统计每个分组里的骑行记录总数,起名num_trips,就是这条路线被骑了多少次ROUND(AVG(cast(tripduration as int64)/60),2) AS duration
先把原始的tripduration(通常是秒数)转成int64类型保证计算准确,再除以60转换成分钟;接着计算这个分组下的平均时长;最后用ROUND把结果保留两位小数,起名duration就是这条路线的平均骑行时长
3. 分组规则
GROUP BY start_station_name, end_station_name, usertype
按照「起点站名称、终点站名称、用户类型」的组合来分组——意思是,只要用户类型相同、起点和终点也完全一样的骑行记录,都会被归为同一组,后面的次数统计、平均时长计算都是针对每个组来做的。
4. 结果排序与截取
ORDER BY num_trips DESC:把所有分组按骑行次数从多到少排序,热门路线排前面LIMIT 10:只取排序后的前10条结果,也就是最热门的10条路线
内容的提问来源于stack exchange,提问作者Yash Tiwari
相关产品推荐
相关产品推荐

