Ограничить, запустив общее количество в SQLite - PullRequest
1 голос
/ 24 октября 2010

Допустим, у меня есть такая таблица (упорядочена по id):

id    amount
---   ---
1     10
2     15
3     10
4     30

Я хочу запрос, который будет возвращать строки таким образом, чтобы сумма amount была больше заданного числа. Таким образом (в несуществующем синтаксисе) SELECT id, amount LIMIT BY running_total(amount) 20 выбирает первые 2 строки, ... LIMIT BY running_total(amount) 60 выбирает все строки. Я не могу изменить схему, чтобы сохранить предварительный итог. Можно ли сделать это достаточно эффективно? Было бы приемлемо, если ответ работает только на SQLite.

1 Ответ

1 голос
/ 24 октября 2010

Вы можете использовать подзапрос, который суммирует все строки с более низким идентификатором:

select  *
from    YourTable t1
where   20 > coalesce(
        (
        select  sum(amount)
        from    YourTable t2
        where   t2.id < t1.id
        ), 0)

Объединение состоит в том, чтобы поймать первый ряд, который имеет сумму null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...