GROUPE PAR et COMPTER de PostgreSQL

La requête:

SELECT COUNT(*) as count_all, 
       posts.id as post_id 
FROM posts 
  INNER JOIN votes ON votes.post_id = posts.id 
GROUP BY posts.id;

Retourne n enregistrements dans Postgresql:

 count_all | post_id
-----------+---------
 1         | 6
 3         | 4
 3         | 5
 3         | 1
 1         | 9
 1         | 10
(6 rows)

Je veux juste récupérer le nombre d'enregistrements retournés: 6.

J'ai utilisé une sous-requête pour obtenir ce que je veux, mais cela ne semble pas optimum:

SELECT COUNT(*) FROM (
    SELECT COUNT(*) as count_all, posts.id as post_id 
    FROM posts 
    INNER JOIN votes ON votes.post_id = posts.id 
    GROUP BY posts.id
) as x;

Comment puis-je obtenir le nombre d'enregistrements dans ce contexte droit dans PostgreSQL?

  • Pourquoi pensez-vous qu'il n'est pas optimale?
  • Cela semble comme une opération si courante il y aurait un moyen plus facile.
InformationsquelleAutor skinkelynet | 2012-08-04