Mam tabelę z id
, year
i count
.PostgreSQL MAX i GROUP BY
Chcę uzyskać MAX(count)
dla każdego id
i utrzymać year
kiedy to się dzieje, więc robię to zapytanie:
SELECT id, year, MAX(count)
FROM table
GROUP BY id;
Niestety, to wyskakuje mi błąd:
ERROR: column "table.year" must appear in the GROUP BY clause or be used in an aggregate function
So Próbuję:
SELECT id, year, MAX(count)
FROM table
GROUP BY id, year;
Ale potem d nie robi się MAX(count)
, po prostu pokazuje tabelę taką jaka jest. Przypuszczam, że podczas grupowania przez year
i id
, uzyskuje maksymalną wartość dla id
tego konkretnego roku.
Jak mogę napisać to zapytanie? Chcę uzyskać id
's MAX(count)
i rok, w którym to się stanie.
jeśli {id, year} są unikalne, 'max (rzecz)' jest tym samym co 'thing'.Zauważ też, że "liczba" jest słowem kluczowym (i rokiem również w niektórych dialektach, IIRC). – wildplasser
W jakim roku chciałbyś się znaleźć z każdym identyfikatorem? Nie ma "roku", jest ich więcej niż jeden, może chcesz "MAX (rok)"? – mata
Tak, są wyjątkowe, więc dostaję rzeczy. Chcę uzyskać ids MAX (rzecz), a także zobaczyć, w którym roku się to stanie. (Nie pisałem, liczę w moim kodzie, tylko przykład) –