Найти тему

1204. Последний человек, который влез в автобус SQL (средний)

Задача: На посадку в автобус стоит очередь из людей. Однако в автобусе установлено ограничение по весу в 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
Результат:

-2

Источник: https://leetcode.com/problems/last-person-to-fit-in-the-bus/