device_event_record 表里面存储车辆进出记录 ,InOutFlag 0 代表进,InOutFlag 1代表出, create_time代表进出时间,通过一个SQL统计2023-05-22 00:00:00开始到2023-05-22 23:59:59区间内每间隔十分钟的车辆的进出次数,如果没有进出记录则默认0
时间: 2024-03-18 09:41:10 浏览: 68
可以使用 MySQL 的日期和时间函数生成指定时间范围内的时间间隔,然后使用 LEFT JOIN 和 IFNULL 函数将所有时间间隔与记录表进行连接,最后使用 GROUP BY 和 CASE WHEN 子句对每个时间间隔进行计数。
以下是一个示例 SQL 查询:
```
SELECT
DATE_FORMAT(intervals.interval, "%Y-%m-%d %H:%i") AS interval,
CASE WHEN COUNT(CASE WHEN InOutFlag = 0 THEN 1 END) IS NULL THEN 0 ELSE COUNT(CASE WHEN InOutFlag = 0 THEN 1 END) END AS in_count,
CASE WHEN COUNT(CASE WHEN InOutFlag = 1 THEN 1 END) IS NULL THEN 0 ELSE COUNT(CASE WHEN InOutFlag = 1 THEN 1 END) END AS out_count
FROM (
SELECT
ADDTIME('2023-05-22 00:00:00', INTERVAL (t1.a + t10.a + t100.a + t1000.a) * 10 MINUTE) AS interval
FROM
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t1,
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t10,
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t100,
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t1000
) intervals
LEFT JOIN device_event_record ON intervals.interval <= create_time AND create_time < ADDTIME(intervals.interval, INTERVAL 10 MINUTE)
WHERE intervals.interval BETWEEN '2023-05-22 00:00:00' AND '2023-05-22 23:59:59'
GROUP BY intervals.interval;
```
该查询首先使用子查询生成指定时间范围内的所有时间间隔,每个时间间隔为 10 分钟。然后,我们使用 LEFT JOIN 和 IFNULL 函数将时间间隔与记录表进行连接,并使用 CASE WHEN 子句对每个时间间隔进行计数。注意,在 COUNT 函数内使用 CASE WHEN 子句是为了确保只计算指定类型的进出记录。如果某个时间间隔没有进出记录,则使用 IFNULL 函数将对应的计数值设置为 0。最后,我们按照时间间隔进行分组,并将结果格式化为指定的日期时间格式。
阅读全文