Получает максимальную разницу в energy
для пользователя, игнорируя пользователей только с одной записью:
SELECT hoflevel.username, MAX(hoflevel.energy-h.energy) as maxDiff
FROM hoflevel
LEFT JOIN hoflevel h
ON h.username=hoflevel.username AND hoflevel.energy>=h.energy
WHERE h.energy IS NOT NULL
GROUP BY hoflevel.username;
По сути, он присоединяет hoflevel
к себе на username
, что создает таблицу с username
и каждой парой значений energy
для этого пользователя.
Затем вычисляется максимальная разница между энергиями, сгруппированными по username
.
Обратите внимание, что вы можете дополнительно сохранить некоторые вычисления, игнорируя пользователей, которые могут иметь несколько записей в базе данных, но каждый раз один и тот же energy
(и поэтому их maxDiff
равен 0), изменив >=
на >
в состоянии соединения.