postgresql groupe par et inner join
Je veux une requête SQL qui ne INNER JOIN
et GROUP BY
en même temps. J'ai essayé les qui ne fonctionne pas:
SELECT customer.first_name, SUM(payment.amount)
FROM customer
GROUP BY customer.customer_id
INNER JOIN payment
ON payment.customer_id = customer.customer_id;
Vous en remercie d'avance!
OriginalL'auteur wonderbummer | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
D'abord,
GROUP BY
vient à la fin de la requête (juste avantorder by
ouhaving
clauses, si vous en avez).Ensuite, tous les champs du select qui ne sont pas dans une fonction d'agrégation doit être dans la clause group by.
donc
Mais les clients avec le même prenom seront regroupés, ce qui n'est probablement pas vraiment ce que vous voulez.
donc plutôt
GROUP BY
clause de droit après laFROM
ouWHERE
clause.Que faire si je veux ajouter une clause where dans la requête ci-dessus, comme
WHERE SUM(payment.amount) > 100
Vous devriez ajouter une clause HAVING si vous voulez un filtre sur un champ groupé :
HAVING SUM(payment.amount) > 100
(après la clause group by)OriginalL'auteur Raphaël Althaus
Que vous souhaitez regrouper les customer_id, mais obtenir le prenom?
Vous pouvez également faire de l'agrégation dans une Table Dérivée, alors vous pouvez obtenir des colonnes de la clientèle:
OriginalL'auteur dnoeth