我正在提取一些按小时显示平均互动的数据,但我希望将其分组,以便使用时间戳显示每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
此查询中的数据如下:
答案 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
部分