2009-06-02 3 views
2

Il y a 2 colonnes dont je veux des données. Fondamentalement, je veux voir de nouvelles inscriptions par jour. Allez-y mollo sur moi, mon premier jour avec MySQL (ou tout autre DB pour cette matière)Mysql compte les colonnes d'utilisateurs et groupe par date de modification

Jusqu'à présent, j'ai ce

mysql> select created, count(id) from user group by created; 
+---------------------+-----------+ 
| created    | count(id) | 
+---------------------+-----------+ 
| 2009-05-27 00:58:56 |   1 | 
| 2009-05-27 01:27:30 |   1 | 
| 2009-05-27 02:35:37 |   1 | 
| 2009-05-27 02:58:56 |   1 | 
| 2009-05-27 03:36:03 |   1 | 
| 2009-05-27 03:38:03 |   1 | 
| 2009-05-27 03:48:16 |   1 | 
| 2009-05-27 03:51:37 |   1 | 

La sortie Je voudrais est

+---------------------+----------------------+ 
| created    | user     | 
+---------------------+----------------------+ 
| 2009-05-27   | 10     | 
| 2009-05-28   | 13     | 
| 2009-05-29   | 19     | 

Toute aide est appréciée!

Merci

Répondre

7
select DATE(created), count(id) from user group by DATE(created); 
+0

+1 pour la réponse rapide et correcte. Vous pouvez également ajouter des alias de colonne pour faciliter l'accès au résultat de la requête dans la langue de votre choix. – PatrikAkerstrand

1
SELECT DATE(created) as date, count(1) as nrRegistered 
FROM user 
GROUP BY date 

Remarque: En comptant 1 au lieu de id nous évitons une recherche dans la table et permettent un index seule requête

+1

Cela suppose que le champ créé est indexé. –

+1

Oui c'est. Il suppose également que MySQL n'est pas assez intelligent pour utiliser l'identifiant (qui est probablement une clé primaire) qui est ajouté à l'index lors de l'exécution de count (id). Je dois donc admettre que c'est une note assez vague. Mais je n'ai pas dit que ma requête force une jointure d'index seulement, juste qu'elle le rend possible. Je suggère d'utiliser un EXPLAIN [...] sur la requête pour être sûr. – PatrikAkerstrand

+0

clarification: La clé primaire est ajoutée si le moteur de stockage est InnoDB, pas MyISAM. – PatrikAkerstrand