首页 > 解决方案 > 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 都是相同的。

如何修改查询以产生我想要的结果?

标签: mysql

解决方案


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

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

推荐阅读