zdałem sobie sprawę, że zapytanie do bazy danych wracał nieoczekiwane rezultaty zrobić do mojego niewłaściwego użycia „DISTINCT ON” i „grupa BY”PostgreSQL - „DISTINCT ON” i „GROUP BY” składni
Mam nadzieję, że ktoś może uspokój mnie o tym. Rzeczywista zapytanie jest dość skomplikowane, więc będę głupi, to w dół:
Mam tabeli zapytania/wewnętrzny, który składa się z object_id i datownika:
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
\.
Próbuję wybrać odrębną ID, sortowane/deduplikowane przez datownika na odwrotnej Chrońmy
więc wyniki powinny być [4, 1, 3, 2, 5]
myślę, że to nie to, czego potrzebuję (wydaje się):
SELECT object_id
FROM test_select
GROUP BY object_id
ORDER BY max(event_timestamp) DESC
;
Do celów testowania/audytu czasami chcę dołączyć pole sygnatury czasowej. Nie mogę chyba wymyślić, jak dołączyć inne pole z tym zapytaniem.
Czy ktoś może wskazać na rażące problemy w moim sql powyżej, lub sugestie, w jaki sposób uwzględnić informacje audytu?
Dzięki! Twoim drugim przykładem była składnia, którą próbowałem zrozumieć. Przetestuję inne zapytania pod kątem wydajności później i zobaczę, czy mogę ich użyć. Generuję to zapytanie w sposób generatywny na podstawie danych wprowadzonych przez użytkownika, a ten drugi przykład jest "łatwy do wykonania". –