Задача: На посадку в автобус стоит очередь из людей. Однако в автобусе установлено ограничение по весу в 1000 килограммах, поэтому некоторые люди могут не сесть.
Напишите SQL-запрос, чтобы найти person_name последнего человека, который может поместиться в автобус без превышения предельного веса. Тестовые примеры генерируются таким образом, чтобы вес первого человека не превышал предельного значения.
Дано:
person_id - столбец первичного ключа для этой таблицы.
В этой таблице содержится информация обо всех людях, ожидающих автобус.
Столбцы person_id и turn будут содержать все числа от 1 до n, где n - количество строк в таблице.
очередь определяет порядок, в котором люди будут садиться в автобус, где очередь = 1 обозначает первого человека, который сядет, а очередь = n обозначает последнего человека, который сядет.
вес - это вес человека в килограммах.
Решение:
SELECT
q1.person_name
FROM Queue q1 JOIN Queue q2 ON q1.turn >= q2.turn
GROUP BY q1.turn
HAVING SUM(q2.weight) <= 1000
ORDER BY SUM(q2.weight) DESC
LIMIT 1
Результат:
Источник: https://leetcode.com/problems/last-person-to-fit-in-the-bus/