Я понял, что запрос базы данных возвращал неожиданные результаты для моего неправильного использования "DISTINCT ON" и "GROUP BY"
Я надеюсь, что кто-то может направить меня прямо на это. Фактический запрос довольно сложный, поэтому я не буду его опускать:
У меня есть таблица/внутренний запрос, который состоит из object_id и метки времени:
CREATE TABLE test_select ( object_id INT , event_timestamp timestamp );
COPY test_select (object_id , event_timestamp) FROM stdin (DELIMITER '|');
1 | 2013-01-27 21:01:20
1 | 2012-06-28 14:36:26
1 | 2013-02-21 04:16:48
2 | 2012-06-27 19:53:05
2 | 2013-02-03 17:35:58
3 | 2012-06-14 20:17:00
3 | 2013-02-15 19:03:34
4 | 2012-06-13 13:59:47
4 | 2013-02-23 06:31:16
5 | 2012-07-03 01:45:56
5 | 2012-06-11 21:33:26
\.
Я пытаюсь выбрать отдельный идентификатор, упорядоченный/дедуплицированный по метке времени на обратном хроном
поэтому результаты должны быть [4, 1, 3, 2, 5]
Я думаю, что это делает то, что мне нужно (кажется):
SELECT object_id
FROM test_select
GROUP BY object_id
ORDER BY max(event_timestamp) DESC
;
Для целей тестирования/аудита я иногда хочу включить поле timestamp. Я не могу понять, как включить другое поле с этим запросом.
Может ли кто-нибудь указать на вопиющие проблемы в моем sql выше или предложения о том, как включить информацию аудита?