Я не знаю о датах, но о целых ...
Select max(sub.x - tbl.x)
From table_name tbl,
(Select min(tbl2.x) x
From table_name tbl2
Where (matches outer record)
And tbl2.x >= tbl.x) sub;
Как правило, выберите максимальную разницу x и y, где y - минимальная дата, соответствующая тому же пользователю, но со значением, превышающим значение, с которым он сравнивается. Если это законно, то что-то в этом роде должно работать.