Вас просят написать что-то с клаузой Having.
Если читать вопрос влоб, то вас просят сгруппировать выборку по атрибуту point_lifetime, и проанализировать сумму баллов в having:
select point_lifetime, sum(point)
from t
group by point_lifetime
having sum(point) <= N -- N нужно рассматривать как входной параметр запроса
Тут бы логично по user_id что-то интересное искать, но в задачке point_lifetime. В общем, нужно видеть с какими исходными данными работаете, чтобы понять, что вы группируете.
Дополнено:
-- тестовые данные
with t as (select 1 id, 1 user_id, 10 point, from_unixtime(1701533439) point_lifetime
union
select 2 id, 1 user_id, 10 point, from_unixtime(1701533439) point_lifetime
union
select 3 id, 2 user_id, 10 point, from_unixtime(1001433439) point_lifetime
union
select 4 id, 1 user_id, -10 point, from_unixtime(1901533439) point_lifetime
union
select 5 id, 1 user_id, 100 point, from_unixtime(1801733439) point_lifetime)
-- экспериментальный запрос
select a.*
from (select t.id,
t.user_id,
t.point,
t.point_lifetime,
sum(t.point) over (partition by t.user_id) sum_point,
row_number() over (partition by t.user_id order by case when t.point > 0 then 0 else 1 end, -- продавливаем положительные баллы вверх
t.point_lifetime desc) rn -- локальный счетчик записей по пользователю, чтобы понять, какую запись хотите выдернуть из подзапроса, нужно сделать так, чтобы интересуемые записи имели rn = 1
from t
where point_lifetime > str_to_date('02.12.2023 10:00:00', '%d.%m.%Y %H:%i:%s') -- считаем, что отметка "сейчас" - это 02.12.2023 10:00:00
) a
where a.sum_point >= 30 -- берем все то, что больше минимальной суммы
and a.rn = 1 -- берем только интересуемую запись по каждому пользователю
order by id