如何筛选一周内至少在两天有登录记录的用户数据
筛选一周内至少两天有登录记录的用户数据
原始数据表
| User | Monday | Tuesday | Wednesday | Thursday | Friday | Total |
|---|---|---|---|---|---|---|
| A | 1 | 3 | 4 | 6 | 1 | 15 |
| B | 0 | 0 | 20 | 0 | 0 | 20 |
| C | 18 | 1 | 0 | 18 | 1 | 38 |
| D | 0 | 2 | 0 | 0 | 0 | 2 |
预期筛选结果
| User | Monday | Tuesday | Wednesday | Thursday | Friday | Total |
|---|---|---|---|---|---|---|
| A | 1 | 3 | 4 | 6 | 1 | 15 |
| C | 18 | 1 | 0 | 18 | 1 | 38 |
实现方法(SQL)
假设数据表名为user_login_counts,可通过计算用户有登录记录的天数完成筛选:
SELECT * FROM user_login_counts WHERE (CASE WHEN Monday > 0 THEN 1 ELSE 0 END) + (CASE WHEN Tuesday > 0 THEN 1 ELSE 0 END) + (CASE WHEN Wednesday > 0 THEN 1 ELSE 0 END) + (CASE WHEN Thursday > 0 THEN 1 ELSE 0 END) + (CASE WHEN Friday > 0 THEN 1 ELSE 0 END) >= 2;
逻辑说明
用CASE语句将每日登录次数转换为1(当日有登录)或0(当日无登录),将这些值求和后,筛选出总和≥2的用户,即为一周内至少两天有登录记录的用户。
内容的提问来源于stack exchange,提问作者tablecloth26
相关产品推荐
相关产品推荐

