PostgreSQL - sintaxe “DISTINCT ON” e “GROUP BY”
Eu percebi que uma consulta de banco de dados estava retornando resultados inesperados para o meu uso indevido de "DISTINCT ON" e "GROUP BY"
Espero que alguém possa me esclarecer isso. A consulta real é bastante complexa, então vou simplificar:
Eu tenho uma tabela / consulta interna que consiste em um object_id e um timestamp:
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
\.
Estou tentando selecionar um ID distinto, ordenado / desduplicado pelo timestamp no cron reverso
então os resultados devem ser [4, 1, 3, 2, 5]
Eu acho que isso faz o que eu preciso (parece):
SELECT object_id
FROM test_select
GROUP BY object_id
ORDER BY max(event_timestamp) DESC
;
Para fins de teste / auditoria, às vezes quero incluir o campo de registro de data e hora. Eu não consigo descobrir como incluir outro campo com essa consulta.
Alguém pode apontar problemas gritantes no meu sql acima, ou sugestões sobre como incluir as informações de auditoria?