PostgreSQL MAX et PAR GROUPE

J'ai une table avec id, year et count.

Je veux obtenir le MAX(count) pour chaque id et de garder la year quand il arrive, donc je fais cette requête:

SELECT id, year, MAX(count)
FROM table
GROUP BY id;

Malheureusement, il me donne une erreur:

ERREUR: la colonne "de la table.année" doit apparaître dans la clause GROUP BY ou être
utilisé dans une fonction d'agrégation

J'ai donc essayer:

SELECT id, year, MAX(count)
FROM table
GROUP BY id, year;

Mais alors, il ne fait pas de MAX(count), ça montre le tableau tel qu'il est. Je suppose, parce que lors d'un regroupement par year et id, il obtient le max pour le id de cette année-là.

Alors, comment puis-je écrire cette requête? Je veux obtenir le ids MAX(count) et l'année qui arrive.

  • si {id,an} sont uniques, max(thing) est le même que thing. Notez également que le "compteur" est un mot-clé, (et de l'année ainsi dans certains dialectes, IIRC)
  • En quelle année avez-vous envie de faire avec chaque id? Il n'y a pas un "à l'année", il y a plus d'un, peut-être vous voulez MAX(year)?
  • Ouais, ils sont uniques, donc je obtenir la chose. Je veux obtenir l'id MAX(chose) et aussi, de voir ce que l'année qui arrive. (Je n'ai pas écrit compter dans mon code, juste un exemple)
  • Je veux obtenir l'année dans laquelle l'IDENTIFIANT maximise la "chose" de la colonne