【发布时间】:2019-05-05 10:21:02
【问题描述】:
我正在使用 BigQuery 练习我的 SQL 技能,并且我正在尝试计算每辆自行车的自行车租赁之间的时间差。基本上,我想为每个不同的 ID 计算 time_diff,对于每一对具有相同自行车 ID 的行。我正在尝试找到每个 bikeid 的 time_diff 分布的中位数现在,我有:
SELECT bikeid,
DATE_DIFF(date(start_time), date(prev_start_time), day) AS Tempo,
OrderCount
FROM ( SELECT bikeid,
start_time,
ROW_NUMBER() OVER(PARTITION BY bikeid ORDER BY start_time ASC) OrderCount,
LAG(start_time) OVER(PARTITION BY bikeid ORDER BY start_time ASC) prev_start_time
FROM `bigquery-public-data.austin_bikeshare.bikeshare_trips`
)
ORDER BY bikeid, start_time
我正在使用公共 BigQuery 数据集 bigquery-public-data.austin_bikeshare.bikeshare_trips,我的结果很奇怪,因为它没有显示任何自行车 ID(我已经预计很多空值 (0) 作为 date_diff,因为数据库注册时间戳,有时这辆自行车一天租了很多次)。
| Linha | bikeid | Tempo | OrderCount |
| 1 | null | null | 1 |
| 2 | null | 57 | 2 |
| 3 | null | 1 | 3 |
【问题讨论】:
-
您是否只想知道给定自行车的平均租用分钟数是多少?
-
@khan 我想找到每辆自行车的自行车租赁之间的时间差分布,之后,我想找到每辆自行车的分布的中位数。但我也想学习如何构建这个分布。
-
检查中位数和其他指标:stackoverflow.com/questions/51981353/…
标签: sql database statistics google-bigquery