mysql - 选择用户每周至少出现一次,持续数周

标签 mysql sql

假设您有一个如下所示的简单表格:

+---------+---------------------+
| user_id | activity_date       |
+---------+---------------------+
|   23672 | 2011-04-26 14:53:02 |
|   15021 | 2011-04-26 14:52:20 |
|   15021 | 2011-04-26 14:52:09 |
|   15021 | 2011-04-26 14:51:51 |
|   15021 | 2011-04-26 14:51:38 |
|    6241 | 2011-04-26 14:51:12 |
|     168 | 2011-04-26 14:51:12 |
...

如何选择过去 4 周内每周至少出现一次的 user_id 集?

最佳答案

select user_id, 
sum(if(activity_date between now() - interval 1 week and now(),1,0)) as this_week,
sum(if(activity_date between now() - interval 2 week and now() - interval 1 week,1,0)) as last_week,
sum(if(activity_date between now() - interval 3 week and now() - interval 2 week,1,0)) as two_week_ago,
sum(if(activity_date between now() - interval 4 week and now() - interval 3 week,1,0)) as three_week_ago
from activities
where activity_date >= now() - interval 4 week 
group by user_id
having this_week > 0 and last_week > 0 and two_week_ago > 0 and three_week_ago > 0

关于mysql - 选择用户每周至少出现一次,持续数周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5792236/

相关文章:

mysql - 基于 select 进行更新以查找重复且小于

mysql - sql查询中使用Max(date)聚合函数时返回所有列中包含Null值的行

sql - SQL中AND与WHERE子句的用法

sql - INNER JOIN ON vs WHERE 子句

PHP/MySQL - 特定用户的特定页面

php - 如果未更新则插入 MySQL

mysql - 无法登录 phpMyAdmin

sql - 递归查询中不允许使用聚合函数。是否有其他方法来编写此查询?

c# - .Net C# 如何连接到外部 SQL Server 数据库? OleDb 还是其他?

mysql - 如何在where子句中执行带有单引号的mysql全文搜索查询?