Что-то вдоль этих линий:
SELECT
YEAR(day) AS year,
WEEK(day) AS week,
SUM(metric) AS total
FROM YourTable
WHERE WEEK(CURRENT_DATE()) - WEEK(day) < 4
GROUP BY 1, 2
Для проверки/воспроизведения - вы можете использовать ниже подход, который hopefuly имитирует ваши данные
SELECT
YEAR(day) AS year,
WEEK(day) AS week,
SUM(metric) AS total
FROM (
SELECT
DATE(DATE_ADD(TIMESTAMP('2016-01-01'), pos - 1, "DAY")) AS day,
CAST(100 * RAND() AS INTEGER) AS metric
FROM (
SELECT ROW_NUMBER() OVER() AS pos, *
FROM (FLATTEN((
SELECT SPLIT(RPAD('', 1 + DATEDIFF(TIMESTAMP(CURRENT_DATE()), TIMESTAMP('2016-01-01')), '.'),'') AS h
FROM (SELECT NULL)),h
)))
) AS YourTable
WHERE WEEK(CURRENT_DATE()) - WEEK(day) < 4
GROUP BY 1, 2
получил это .. Спасибо! – rbkk2016