下面是BigQuery标准SQL的示例
#standardSQL
WITH `project.dataset.table` AS (
SELECT 0 UserId, TIMESTAMP '2016-07-14 14:43:30' Login UNION ALL
SELECT 2, '2018-07-09 17:19:55' UNION ALL
SELECT 2, '2018-07-10 20:38:37' UNION ALL
SELECT 2, '2018-07-12 17:37:20' UNION ALL
SELECT 2, '2018-07-13 01:08:20' UNION ALL
SELECT 3, '2015-12-04 17:17:41' UNION ALL
SELECT 3, '2015-12-04 20:14:43'
)
SELECT
UserId,
ROUND(AVG(IF(
TIMESTAMP_DIFF(TIMESTAMP_TRUNC(next_Login, DAY), TIMESTAMP_TRUNC(Login, DAY), DAY) < 2,
TIMESTAMP_DIFF(next_Login, Login, MINUTE), NULL
))/60, 2) average_hours
FROM (
SELECT UserId, Login,
LEAD(Login) OVER(PARTITION BY UserId ORDER BY Login) next_Login
FROM `project.dataset.table`
)
GROUP BY UserId
ORDER BY UserId
结果为
Row UserId average_hours
1 0 null
2 2 17.41
3 3 2.95