Использовать ROW_NUMBER
:
WITH cte AS (
SELECT m.*, ROW_NUMBER() OVER (PARTITION BY category ORDER BY error, created DESC) rn
FROM measurements m
)
SELECT category, value, error, created
FROM cte
WHERE rn = 1;
. Для краткого объяснения предложение PARTITION BY
предписывает БД генерировать отдельный номер строки для каждой группы записей в той же категории.Предложение ORDER BY
помещает эти записи с ошибкой smalls .Если две или более записи в одной и той же категории будут связаны с наименьшей ошибкой, то на следующем уровне сортировки будет помещена запись с самой последней датой создания.