J'ai une table simple avec un oid unit_id, un horodatage, un diag bytea. La clé primaire est une combinaison de time et unit_id.Postgres sélectionner toutes les colonnes mais grouper par une colonne
L'idée derrière cette requête est d'obtenir la dernière ligne (le plus grand horodatage) pour chaque identifiant unique. Cependant, les lignes pour chaque unité_id avec la dernière heure ne sont pas toujours retournées.
Je veux vraiment grouper juste par l'unit_id, mais postgres me fait utiliser diag aussi, puisque je choisis cela.
SELECT DISTINCT ON(unit_id) max(time) as time, diag, unit_id
FROM diagnostics.unit_diag_history
GROUP BY unit_id, diag
Pouvons-nous le faire sans utiliser le sous-select? – metdos
@metdos: Je ne peux pas penser à quoi que ce soit du haut de la tête, mais il pourrait y avoir un moyen. Quel est le problème avec les tables dérivées? –