MYSQL 按照时间每10统计统计一次总数 如何写sql 语句
时间: 2023-07-05 17:33:17 浏览: 129
如果你想按照时间每10分钟统计一次总数,可以使用 MySQL 的日期和时间函数来实现。以下是一个示例 SQL 语句:
```
SELECT DATE_FORMAT(created_at, '%Y-%m-%d %H:'), FLOOR(MINUTE(created_at) / 10) * 10 AS time_slot, COUNT(*) AS total
FROM your_table
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)
GROUP BY DATE_FORMAT(created_at, '%Y-%m-%d %H:'), FLOOR(MINUTE(created_at) / 10) * 10
ORDER BY created_at DESC;
```
这个 SQL 语句可以做如下解释:
- `DATE_FORMAT(created_at, '%Y-%m-%d %H:')`: 这个函数会将 `created_at` 字段的值格式化为年月日小时的形式,方便后续进行分组统计。
- `FLOOR(MINUTE(created_at) / 10) * 10 AS time_slot`: 这个表达式会将 `created_at` 字段的分钟数转换为一个时间段,比如 `12:05` 将被转换为 `12:00-12:09`。这个时间段将用于后续的分组统计。
- `WHERE created_at >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)`: 这个条件会限制查询结果只包含最近10分钟内的数据。
- `GROUP BY DATE_FORMAT(created_at, '%Y-%m-%d %H:'), FLOOR(MINUTE(created_at) / 10) * 10`: 这个语句会将查询结果按照时间段进行分组。
- `COUNT(*) AS total`: 这个表达式会统计每个时间段内的记录数量。
- `ORDER BY created_at DESC`: 这个语句会将查询结果按照时间倒序排列,方便查看最近的统计结果。
注意,以上语句中的 `your_table` 需要替换为你要查询的表名称。
阅读全文