如何在Trino中按5分钟间隔对日期数据做聚合统计
在Trino中按5分钟时间间隔聚合统计数据
原始数据表
| timestamp | stream_id |
|---|---|
| 2021-01-01 12:30:29.928 | 123 |
| 2021-01-01 01:30:29.928 | 124 |
| 2021-01-01 05:30:29.928 | 223 |
| 2021-01-01 01:23:29.928 | 134 |
预期输出
| day | timestamp | count(stream_id) |
|---|---|---|
| 2021-01-01 | 12:00 | 5 |
| 2021-01-01 | 12:05 | 18 |
| 2021-01-01 | 12:10 | 39 |
| 2021-01-01 | 12:20 | 90 |
| 2021-01-01 | 12:25 | 45 |
| 2021-01-01 | 12:30 | 76 |
| 2021-01-01 | 12:35 | 93 |
实现SQL
SELECT DATE(timestamp) AS day, TO_CHAR(DATE_TRUNC('5 minutes', timestamp), 'HH24:MI') AS timestamp, COUNT(stream_id) AS "count(stream_id)" FROM your_table_name GROUP BY DATE(timestamp), DATE_TRUNC('5 minutes', timestamp) ORDER BY day, DATE_TRUNC('5 minutes', timestamp);
语句说明
DATE(timestamp):提取时间字段的日期部分,生成day列。DATE_TRUNC('5 minutes', timestamp):将时间截断到最近的5分钟间隔(例如12:32会被调整为12:30)。TO_CHAR(..., 'HH24:MI'):把截断后的时间格式化为时分形式,匹配预期输出的timestamp列格式。COUNT(stream_id):统计每个5分钟间隔内的stream_id数量。- 分组与排序:按日期和截断后的时间分组,确保结果按时间顺序排列。
内容的提问来源于stack exchange,提问作者Akansha
相关产品推荐
相关产品推荐

