Как выбрать строку с максимальной датой
Есть следующая таблица. Нужно выбрать строку с максимальной датой и остальные поля данной строки.
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