2010-05-16 4 views
5

J'ai une table d'utilisateur unique et j'essaie de trouver une requête qui renvoie le nombre total de tous les utilisateurs regroupés par date avec le nombre total d'utilisateurs regroupés par date qui sont d'un client spécifique.SQL pour le nombre total et le nombre total dans lequel la condition est vraie

Voici ce que j'ai jusqu'à présent, là où il y a le nombre total d'utilisateurs regroupés par date, mais ne peut pas sembler comprendre comment obtenir le nombre de ces utilisateurs où user.client_id = x

SELECT user.created, 
COUNT(user.id) AS overall_count 
FROM user 
GROUP BY DATE(user.created) 

essayer pour un résultat de ligne comme ceci:

[created] => 2010-05-15 19:59:30 
[overall_count] => 10 
[client_count] => (some fraction of overall count, the number of users where 
        user.client_id = x grouped by date) 

Répondre

11

cela devrait faire l'affaire pour MySQL:

SELECT 
    user.created, 
    COUNT(user.id) AS overall_count, 
    SUM(user.client_id = x) AS client_count 
FROM user 
GROUP BY DATE(user.created) 

L'expression booléenne user.client_id = x renvoie 1 si elle est vraie et 0 sinon, vous pouvez donc les résumer.


Avec une autre base de données que vous feriez

SUM(CASE WHEN user.client_id = x THEN 1 ELSE 0 END) AS client_count 
+2

que it-- est merci! – twmulloy

Questions connexes