mysql - 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 都是相同的。
如何修改查询以产生我想要的结果?
解决方案
您可以使用总和(和分组依据)
SELECT userId, COUNT(*) as logins, sum(IF(tstamp < '2018-01-01',1,0)) as loginsBeforeJan1
FROM user_login
group by userId;
推荐阅读
- unity3d - Unity 错误 CS1520:方法必须有返回类型
- firebase - 每个项目的 Firebase 应用限制 - 达到 1000
- html - JQuery 性能问题
- r - 在 data.table 列的子集上使用 `any()`
- python - Python 脚本未在 Windows 任务计划程序中运行
- r - 用函数填充列
- git - 我如何将 5k+ 未暂存的更改包含到 .gitignore 文件中?
- javascript - 将参数传递给 Express 中间件不起作用
- c++ - 使用函数反转向量
- javascript - How do I filter multiple items from an array and add to an object?