mysql 统计连续7天签到的人数
时间: 2024-09-17 17:03:33 浏览: 7
在MySQL中统计连续7天签到的人数,通常需要创建一个日期字段,例如`sign_in_date`,然后使用窗口函数或者自连接技术来实现。假设有一个用户签到表`attendance`,其中包含用户的ID(`user_id`)和签到日期(`sign_in_date`)。
以下是一个简单的SQL查询示例,这里我们假设`attendance`表有`user_id`和`sign_in_date`列:
```sql
SELECT user_id,
COUNT(DISTINCT sign_in_date) OVER (
ORDER BY sign_in_date
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS consecutive_days
FROM attendance
WHERE sign_in_date >= CURDATE() - INTERVAL 7 DAY
GROUP BY user_id
HAVING consecutive_days = 7;
```
这个查询的工作原理是:
1. 使用`COUNT(DISTINCT sign_in_date)`计算每个用户的连续签到日期,`OVER`子句用于窗口分组。
2. `ROWS BETWEEN 6 PRECEDING AND CURRENT ROW`定义了窗口范围,即当前行及其前6行(包括当前行),这样可以获取连续的7天签到记录。
3. `WHERE`子句筛选出最近7天的数据。
4. `GROUP BY`按用户ID分组,确保每个用户的7天数据独立。
5. `HAVING`条件过滤出那些连续7天都有签到的用户。