Как выбрать значение определенного поля из таблицы в базе данных, если сумма значений из данного столбца не превышает определенный порог? - PullRequest
0 голосов
/ 03 октября 2018

Представьте, что есть лифт, который может выдержать вес до определенного килограмма (килограмма).Теперь рассмотрим таблицу в базе данных со следующими столбцами: id, name, weight, turn - где имя представляет имя человека, weight представляет вес этого человека (скажем, в килограммах), а turn представляет позициючеловека, ожидающего в очереди.Как можно выбрать имя последнего человека, который может войти в лифт, учитывая максимальный вес, который может выдержать лифт.

Например, учитывая следующие значения из таблицы, названной INFO: (1, Джон 100, 1), (2, Джейд, 80, 3), (3, Кейт, 90, 2), (4, Бебе, 70, 4).Если максимальный вес, который может выдержать лифт, составляет 200 кг, последним, кто может войти в лифт, является «Кейт» (первым, кто входит в лифт, является Джон, считая значение поворота равным «1», затем «Кейт», считая значение«2») - вес Джона (100) + вес Кейт (90) = 190 (если мы рассмотрим следующего человека, предел будет превышен).

1 Ответ

0 голосов
/ 03 октября 2018

Вы бы использовали кумулятивные суммы:

select t.*
from (select t.*, sum(weight) over (order by id) as running_weight
      from t
     ) t
where running_weight <= 200
order by id desc
fetch first 1 row only;
...