I have a table containing log entries that looks like this:
id | name | level | timestamp 5 | ironman | 35 | 2019-01-06 11:37:40 6 | ironman | 35 | 2019-01-06 11:38:40 7 | ironman | 36 | 2019-01-06 11:39:40 8 | superman | 25 | 2019-01-06 11:39:49
I need help making a query that returns a list of levels gained the last X hours for each character, preferably sorted by amount gained. So by this example my wanted result is this
id | name | gained | timestamp 7 | ironman | 1 | 2019-01-06 11:37:40 8 | superman | 0 | 2019-01-06 11:37:40
Advertisement
Answer
Try an aggregate query that compares the MIN
and MAX
level of each character :
SELECT name, MAX(level) - MIN(level) as gained, MIN(timestamp) FROM mytable WHERE timestamp > NOW() - INTERVAL 1 HOUR GROUP BY name ORDER BY gained desc
NB : this assumes that the level
of a character may only increase. If the level of a character decreases, it will still appear as a gain.