Ниже для BigQuery Standard SQL
С практической точки зрения, я бы рекомендовал группировать по ячейкам: 0-9, 10-19, 20-29 и т. Д., Как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT '06:47' eta, '06:47' arrived UNION ALL
SELECT '08:30', '08:40' UNION ALL
SELECT '10:30', '10:40' UNION ALL
SELECT '10:30', '10:31'
)
SELECT FORMAT('%i - %i', bin, bin + 9) bin, cnt
FROM (
SELECT
10 * DIV(TIME_DIFF(PARSE_TIME('%R', arrived) , PARSE_TIME('%R', eta) , MINUTE), 10) bin,
COUNT(1) cnt
FROM `project.dataset.table`
GROUP BY bin
)
ORDER BY bin
с результатом
Row bin cnt
1 0 - 9 2
2 10 - 19 2
в случае, если вам нужно точное распределение по time_diff как есть - вы можете использовать ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT '06:47' eta, '06:47' arrived UNION ALL
SELECT '08:30', '08:40' UNION ALL
SELECT '10:30', '10:40' UNION ALL
SELECT '10:30', '10:31'
)
SELECT
TIME_DIFF(PARSE_TIME('%R', arrived) , PARSE_TIME('%R', eta) , MINUTE) diff,
COUNT(1) cnt
FROM `project.dataset.table`
GROUP BY diff
ORDER BY diff
с результатом как
Row diff cnt
1 0 1
2 1 1
3 10 2