web-dev-qa-db-fra.com

SQL: Comment obtenir le nombre de chaque valeur distincte dans une colonne?

J'ai une table SQL appelée "posts" qui ressemble à ceci:

id | category
-----------------------
1  | 3
2  | 1
3  | 4
4  | 2
5  | 1
6  | 1
7  | 2

Chaque numéro de catégorie correspond à une catégorie. Comment pourrais-je compter le nombre de fois où chaque catégorie apparaît sur un message tout en ne requête SQL?

Par exemple, une telle requête peut renvoyer un tableau symbolique tel que celui-ci: (1:3, 2:2, 3:1, 4:1)


Ma méthode actuelle consiste à utiliser des requêtes pour chaque catégorie possible, telles que: SELECT COUNT(*) AS num FROM posts WHERE category=#, puis à combiner les valeurs de retour dans un tableau final. Cependant, je cherche une solution qui utilise une seule requête.

145
Jeff Gortmaker
SELECT
  category,
  COUNT(*) AS `num`
FROM
  posts
GROUP BY
  category
261
Dan Grossman