You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

理解FROM子句中的子查询:如何计算各骑行站点骑行次数

拆解解读共享单车站点骑行次数统计SQL代码

原查询语句(注:原语句存在一处小错误,已标注)

SELECT
    station_id,
    name,
    number_of_rides.  -- 这里多了一个英文句号,需删除才能正常执行
FROM
(
    SELECT
        start_station_id,
        COUNT(*) number_of_rides
    FROM
        bigquery-public-data.new_york.citibike_trips
    GROUP BY
        start_station_id
)
INNER JOIN
    bigquery-public-data.new_york_citibike.citibike_stations ON
        station_id = start_station_id
ORDER BY
number_of_rides DESC

代码逐部分拆解解读

1. 子查询:统计各起点站的骑行次数

这是核心统计逻辑:

  • 从bigquery-public-data.new_york.citibike_trips表(纽约共享单车骑行记录总表)读取数据
  • 按start_station_id(骑行起点站ID)分组,把同一站点出发的所有骑行记录归为一组
  • 用COUNT(*)统计每组的记录行数——每一行对应一次骑行,所以统计结果就是该站点作为起点的总骑行次数,命名为number_of_rides
  • 子查询最终输出「起点站ID + 对应骑行次数」的数据集

2. INNER JOIN:关联站点信息表获取站点名称

  • 将子查询的统计结果,与bigquery-public-data.new_york_citibike.citibike_stations表(共享单车站点信息表)做内关联
  • 关联条件station_id = start_station_id:把站点信息表的站点ID,和子查询的起点站ID一一匹配,从而将站点名称(name字段)和骑行次数对应起来
  • 内关联仅保留两边表ID匹配的记录,也就是只统计有对应站点信息的骑行数据

3. 最终输出与排序

  • 通过SELECT指定输出字段:站点ID(station_id)、站点名称(name)、骑行次数(number_of_rides)
  • 用ORDER BY number_of_rides DESC将结果按骑行次数从多到少排序,直观展示热门站点

内容的提问来源于stack exchange,提问作者Data_Yoshy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:40:55