Имеется таблица log с логами следующего содержания:
id | link_id | date | value
где id порядковый номер, link_id связь с другой таблицей, date дата создания записи, value значение.
Требуется найти разность value у последней и предпоследней даты для каждого link_id, у самого получается что-то подобное:
select log1.link_id,log2.link_id,log1.value,log2.value,log1.value - log2.value as diff,log1.date,log2.date
from log as log1, log as log2
where log1.link_id = log2.link_id and
log2.date = (select max(date) from log as log3 where log3.link_id = log2.link_id) and
log1.date = (select max(date) from log as log4 where log4.link_id = log1.link_id and log4.date = (select max(date) from log as log5 where log5.link_id = log4.link_id))
По моему мнению логика такая: выводим разницу между value где совпадают link_id и где одна дата максимальная, другая перед максимальная