2010-05-16 10 views
5

Tengo una única tabla de usuario y estoy tratando de encontrar una consulta que devuelva la cuenta total de todos los usuarios agrupados por fecha junto con el recuento total de usuarios agrupados por fecha que son de un cliente específico.SQL para recuento total y recuento dentro de donde la condición es verdadera

Aquí es lo que tengo hasta ahora, donde hay el número total de usuarios agrupados por fecha, pero parece que no puede encontrar la manera de obtener el recuento de esos usuarios, donde user.client_id = x

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

tratando de tener un resultado como éste fila:

[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) 

Respuesta

11

esto debería hacer el truco para 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) 

La expresión booleana user.client_id = x devuelve 1 si es verdadera y 0 si no es así, por lo que puede resumirlas.


con otra base de datos que haría

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

eso es it-- gracias! – twmulloy

Cuestiones relacionadas