mysql中的条件计数

时间:2018-07-04 15:54:45

标签: mysql

我有一个表user_login,其中有两行userId和tstamp(用户ID和登录时间戳)。

计算登录数量很简单:

SELECT userId, COUNT(*) as logins FROM user_login GROUP BY userId;

计算特定日期(例如2018年1月1日)之前的登录次数也很简单:

SELECT userId
     , COUNT(*) as loginsBeforeJan1 
  FROM user_login 
 WHERE tstamp < '2018-01-01' 
 GROUP 
    BY userId;

如何将两个结果都放在一个表中?我尝试过

SELECT userId
     , COUNT(*) as logins
     , COUNT(IF(tstamp < '2018-01-01',1,0)) loginsBeforeJan1 
  FROM user_login 
 GROUP 
    BY userId;

但是logins和loginsBeforeJan1都相同。

如何修改查询以产生所需的结果?

2 个答案:

答案 0 :(得分:1)

您可以使用总和(和分组依据)

SELECT userId, COUNT(*) as logins, sum(IF(tstamp < '2018-01-01',1,0)) as loginsBeforeJan1 
FROM user_login
group by userId;

答案 1 :(得分:0)

尝试在查询中使用WHERE子句代替IF语句