Count nombre de fois la valeur apparaît dans une colonne particulière dans MySQL

Cela a probablement été demandé avant, mais je suis incapable de faire mon chemin à travers la myriade de résultats de recherche.

Étant donné une table MySQL non normalisée, Quelle est la requête la plus optimisée pour compter le nombre de fois que chaque valeur distincte de la colonne x a été utilisée?

Par exemple, étant donné une table contenant

mike
mary
mike

Renvoie des résultats comme:

mike 2
mary 1

À partir de la documentation MySQL, il semblerait que count est une fonction d'agrégat qui peut être utilisée avec GROUP BY, mais elle ne fait pas ce que je souhaitez (elle retourne le nombre total de lignes dans le GROUP BY, pas le nombre d'apparitions de chaque ligne. c'est-à-dire que cela ne fonctionne pas SELECT count(email) as c FROM orders GROUP BY email

24
demandé sur Cody Gray 2012-04-18 02:11:44

4 réponses

select email, count(*) as c FROM orders GROUP BY email
45
répondu Nesim Razon 2012-05-06 10:33:26
SELECT column_name, COUNT(column_name)
FROM table_name
GROUP BY column_name
14
répondu garnertb 2012-04-17 22:15:04

Jetez un oeil au groupe par fonction.

Ce Que fait la fonction group by est de regrouper la valeur similaire pour un champ donné. Vous pouvez ensuite afficher le nombre de fois que cette valeur a été groupée à l'aide de la fonction COUNT.

Documentation MySQL

Vous pouvez également utiliser la fonction group by avec un bon nombre d'autres fonctions définies par MySQL (voir le lien ci-dessus).

mysql> SELECT student_name, AVG(test_score)
    ->        FROM student
    ->        GROUP BY student_name;
1
répondu Erwald 2012-04-17 22:18:11
select name, count(*) from table group by name;

Je pense devrait le faire

0
répondu davethecoder 2012-04-17 22:14:30