我有一个表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都相同。
如何修改查询以产生所需的结果?
答案 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
语句