Ho una tabella con id
, year
e count
.PostgreSQL MAX e GROUP BY
voglio ottenere il MAX(count)
per ogni id
e mantenere il year
quando accade, quindi faccio questa domanda:
SELECT id, year, MAX(count)
FROM table
GROUP BY id;
Purtroppo, mi dà un errore:
ERROR: column "table.year" must appear in the GROUP BY clause or be used in an aggregate function
Così Provo:
SELECT id, year, MAX(count)
FROM table
GROUP BY id, year;
Ma poi, d Non deve fare MAX(count)
, mostra solo la tabella così com'è. Suppongo che quando si raggruppa per year
e id
, si ottiene il massimo per lo id
di quell'anno specifico.
Quindi, come posso scrivere quella domanda? Voglio ottenere lo e l'anno in cui ciò accade.
se {id, anno} sono univoci, 'max (cosa)' è uguale a 'cosa'.Nota che "contare" è una parola chiave, (e anche l'anno in alcuni dialetti, IIRC) – wildplasser
Che anno vuoi ottenere con ogni ID? Non c'è un "anno", ce ne sono più di uno, forse vuoi 'MAX (anno)'? – mata
Sì, sono unici quindi ho una cosa. Voglio ottenere gli ID MAX (cosa) e anche, vedere in che anno accade. (Non stavo scrivendo conto nel mio codice, solo un esempio) –