Как написать запрос для получения данных о баллах?

Могли бы вы помочь составить запрос к таблице данных, содержащей пользовательские баллы? В таблице представлены следующие столбцы: id, user_id, point и point_lifetime. Значения в столбце "point" могут быть как положительными, так и отрицательными, а столбец "point_lifetime" отражает время жизни баллов в формате timestamp. Мне нужно найти значение point_lifetime для тех записей, где сумма значений в столбце "point" меньше или равна заданному значению N.
  • 1 декабря 2023 г. 18:18
Ответы на вопрос 2
Допустим, N = 100, тогда Запрос SQL может выглядеть следующим образом:

```sql
SELECT point_lifetime 
FROM (SELECT point_lifetime, SUM(point) OVER (ORDER BY point_lifetime) AS running_sum
      FROM ваша_таблица) t
WHERE running_sum <= 100;
```

В этом запросе, мы используем оконную функцию `SUM() OVER (ORDER BY ...)`, для подсчёта накопленной (кумулятивной) суммы баллов, сортированных по времени жизни баллов `point_lifetime`.

Значение 100 в `running_sum <= 100` необходимо заменить на значение, которое вам необходимо.
Вам нужно написать что-то, где будет присутствовать конструкция Having. Если расшифровывать задание, то вам необходимо создать группу данных, используя атрибут point_lifetime, и проанализировать суммарное количество баллов с помощью Having:select point_lifetime, sum(point)
from t
group by point_lifetime
having sum(point) <= N -- Здесь N - это входной параметр, который нужно учитывать в запросеМожно было бы искать что-то интересное по user_id, но в указаниях упоминается point_lifetime. Так что нужно разобраться с исходными данными, чтобы понять, что вы группируете. 
Похожие вопросы