Как выбрать строку с максимальной датой

Есть следующая таблица. Нужно выбрать строку с максимальной датой и остальные поля данной строки.

id | usr | action | datetime
____________________________________
1 | Иванов |  создал  |   datetime1
2 | Иванов  |  изменил |   datetime2
3 | Петров |  изменил |   datetime3
4 | Петров  |  изменил |   datetime4
5 | Петров  |  изменил |   datetime5
6 | Сидоров |  изменил |   datetime6
7 | Сидоров |  Подписал |   datetime7

Необходимо получить информацию последних действиях. кто и когда последний раз создал, изменил и подписал. То есть на выходе должно быть:

1 | Иванов | создал | datetime1
6 | Сидоров | изменил | datetime6
7 | Сидоров | Подписал | datetime7

Решение для PostgreSQL

select distinct on (1) 
	-- выбрать только уникальные значения по первому полю (action) из выборки
action, 
usr,
datetime
	-- вывести action, usr, datetime
from table t1
order by 1, datetime desc 
	-- для выборки отсортировать по первому полю (action), затем по дате в обратном порядке

Обсуждение на Тостере

Опубликовано 30.11.2016