在LegacySQL中将时间戳取整为15分钟间隔

时间:2018-09-26 09:16:12

标签: sql google-bigquery

我正在提取一些按小时显示平均互动的数据,但我希望将其分组,以便使用时间戳显示每15分钟的平均互动,但是我只能使用LegacySQL。我已经阅读了使用StandardSQL实现此目的的几种解决方案,但是如何使用Legacy来实现呢?

到目前为止,这是我的代码:

SELECT
DAYOFWEEK(meta_recordDate) AS day_num,
HOUR(property_event_ts)+1 AS hour,
IF(page_type = 'transaction',COUNT(transaction_id),0)/4 AS average_interactions,
FROM [TABLE]
WHERE (TIMESTAMP(meta_recordDate) BETWEEN DATE_ADD(TIMESTAMP(CURRENT_DATE()), -31, 'DAY') AND DATE_ADD(TIMESTAMP(CURRENT_DATE()), -1, 'DAY')) 
AND dayofweek(current_date()) = DAYOFWEEK(meta_recordDate)
AND page_type = 'transaction'
GROUP BY page_type,day,hour,day_num
ORDER BY hour

此查询中的数据如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

在LegacySQL中将时间戳记的分钟数舍入为15分钟间隔-您可以使用以下表达式

15 * INTEGER(MINUTE(property_event_ts)/15 + 1)

因此,将15 * INTEGER(MINUTE(property_event_ts)/15 + 1) AS mnt添加到您的SELECT列表中,并将mnt添加到GROUP BY列表中

取决于您要舍入的方式,可以潜在地删除+ 1部分