Поскольку значения A
гарантированно являются последовательными целыми числами, учитывая, что N
мы знаем для любого конкретного A
, какие значения нас интересуют. Поэтому
SELECT
A,
(SELECT SUM(B) FROM Table T2 WHERE T.A <= T2.A AND T2.A <= T.A + N - 1)
AS SumOfBs
FROM Table T
WHERE A + N - 1 <= (SELECT COUNT(*) FROM Table)
дает для каждого A
, сумма значений B
для строк N
, начинающихся там.WHERE
ограничивает нас строками, которые действительно имеют строки N
, начинающиеся там.Поместите это в подзапрос, и мы можем получить максимум:
SELECT
MAX(SumOfBs) AS DesiredValue
FROM
(
SELECT
A,
(SELECT SUM(B) FROM Table T2 WHERE T.A <= T2.A AND T2.A <= T.A + N - 1)
AS SumOfBs
FROM Table T
WHERE A + N - 1 <= (SELECT COUNT(*) FROM Table)
) Intermediate
должен выполнить эту работу.