SQL 时间处理与高级查询技巧
1. SQL 中的时间处理
在 SQL 数据库中处理时间和日期能为数据分析增添新的维度,帮助我们解答事件发生时间以及其他与时间相关的问题。
例如,在计算累计时间时,可能会遇到格式不直观的问题。假设累计时间为 5 天 13:47:00,但数据库报告为 2 天 85:47:00,虽然两者表示的时长相同,但后者更难解读。这是使用特定语法对数据库间隔求和时的一个局限性。
为了解决这个问题,可以使用以下代码:
SELECT segment,
arrival - departure AS segment_time,
sum(date_part('epoch', (arrival - departure)))
OVER (ORDER BY trip_id) * interval '1 second' AS cume_time
FROM train_rides;
这里的 epoch
是指自 1970 年 1 月 1 日午夜以来经过的秒数,这对于计算时长很有用。上述代码中,使用 date_part()
函数结合 epoch
设置提取到达和出发间隔之间经过的秒数,然后将每个总和乘以 1 秒的间隔,将这些秒数转换为间隔值。
以下是使用该方法的输出示例:
| segment | segment_time | cume_time |
| — | — | — |
| Chica