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

twm*_*loy 6 mysql sql count

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

以下是我到目前为止的情况,其中按日期分组的用户总数,但似乎无法弄清楚如何获取user.client_id = x的用户数

SELECT user.created,
COUNT(user.id) AS overall_count
FROM user
GROUP BY DATE(user.created)
Run Code Online (Sandbox Code Playgroud)

尝试像这样的行结果:

[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)
Run Code Online (Sandbox Code Playgroud)

Pet*_*ang 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)
Run Code Online (Sandbox Code Playgroud)

如果布尔表达式为真,则user.client_id = x返回1它,0如果不是,则可以将它们相加.


使用另一个数据库,你会做

SUM( CASE WHEN user.client_id = x THEN 1 ELSE 0 END ) AS client_count
Run Code Online (Sandbox Code Playgroud)