2010-05-16 41 views
5

我有一个用户表,我试图想出一个查询,该查询返回按日期分组的所有用户总数以及用户总数按特定客户的日期分组。在条件为真的情况下,SQL中的总计数和条数为

这里是我迄今,那里的按日期分组用户的总数,但似乎无法弄清楚如何获得这些用户的数量,其中user.client_id = X

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

努力了行的结果是这样的:

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

回答

11

这应该对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) 

如果为真,则布尔表达式user.client_id = x返回1,否则0,因此您可以将它们总结起来。


与其他数据库,你会做

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

这就是它 - 谢谢! – twmulloy 2010-05-16 06:37:58