SQL表示条件为真的总计数和计数

时间:2010-05-16 06:30:42

标签: sql mysql count

我有一个用户表,我正在尝试提供一个查询,该查询返回按日期分组的所有用户的总数,以及按日期分组的特定客户的用户总数。

这是我迄今为止所拥有的,按日期分组的用户总数,但似乎无法弄清楚如何获取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)

1 个答案:

答案 0 :(得分:15)

这应该可以解决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