I ont une table de messages qui ressemble à ceci:postgres par fonction d'agrégation
+------------+-------------+----------+
| sender_id | created_at | message |
+------------+-------------+----------+
| 1 | 2010-06-14 | the msg |
| 1 | 2010-06-15 | the msg |
| 2 | 2010-06-16 | the msg |
| 3 | 2010-06-14 | the msg |
+------------+-------------+----------|
Je veux sélectionner le message le plus récent pour chaque expéditeur.
Cela ressemble à un GROUP BY sender_id et à ORDER BY created_at mais j'ai du mal à obtenir le message le plus récent sélectionné.
J'utilise postgres donc besoin d'une fonction d'agrégation sur le terrain created_at dans l'instruction SELECT si je veux commander par ce champ si je cherchais à faire quelque chose comme cela comme un test initial
SELECT messages.sender_id, MAX(messages.created_at) as the_date
FROM messages
GROUP BY sender_id
ORDER BY the_date DESC
LIMIT 10;
Cela semble fonctionner mais quand je veux aussi sélectionner 'message', je n'ai aucune idée de la fonction d'agrégat à utiliser. Je veux simplement juste le message qui correspond au MAX created_at.
Y a-t-il un moyen d'y arriver ou est-ce que je m'approche de la mauvaise façon?
Quelle version êtes-vous? –
8.3 Je crois (heroku) – johnnymire