В следующем запросе указывается последняя дата, когда у пользователя есть максимальное слово.
Ваш запрос не будет запущен, когда вы активировали ONLY_FULL_GROUP_BY.
Вы всегда должны указывать для каждые столбец, который агрегирующую функцию вы хотите использовать, потому что SQL строки не имеют никакого порядка, и каждый столбец будет выбран сам по себе.
Я выбрал Max (date_created) , так что MySQL знает, какую дату показывать, потому что если бы было более одной даты с тем же максимальным словом, MySQL показало бы все.
SELECT
u.username, u1.maxword, MAX(u.date_created)
FROM
user_records u
INNER JOIN
(SELECT
username,DATE(date_created) date_created, MAX(wordpermin) AS maxword
FROM
user_records
GROUP BY username,DATE(date_created)) u1 ON u.username = u1.username
AND u.wordpermin = u1.maxword AND Date(u.date_created) = DATE(u1.date_created)
WHERE
DATE(u.date_created) = CURDATE()
GROUP BY (username)
ORDER BY maxword DESC
LIMIT 20;
LIMIT 20
Examole http://sqlfiddle.com/#! 9/857355/2