假设你的数据库表名为 sbxx,以下是查询昨天在线时间的 SQL 语句:

SELECT 
    id,
    SUM(DATEDIFF(MINUTE, LAG(sj, 1, sj) OVER (PARTITION BY id ORDER BY sj), sj)) AS yesterday_online_time
FROM 
    sbxx
WHERE 
    sj >= DATEADD(DAY, -1, GETDATE()) AND 
    sj < GETDATE() AND 
    ljxx = 'online'
GROUP BY 
    id

解释:

  1. 使用 WHERE 子句筛选出昨天(DATEADD(DAY, -1, GETDATE()))上线的记录。

  2. 使用窗口函数 LAG 计算设备上一次上线时间和这次下线时间之间的时间差(单位为分钟)。

  3. 对于同一个设备(PARTITION BY id),按照时间升序(ORDER BY sj)计算每次上线的时间差,并把它们相加。

  4. 使用 GROUP BY 子句按照设备 ID 分组,计算每个设备昨天在线的总时间。

注意事项:

  1. 以上 SQL 语句的时间单位为分钟,如果需要换算成小时或其他时间单位,可以相应地修改查询语句。

  2. 以上 SQL 语句假设设备状态只有 online 和 offline 两种,如果设备状态有其他取值,需要相应地修改 ljxx = 'online' 的条件。

目前有张表sbxx记录着设备上线下线的时间字段有:id 为设备idsj为时间字段ljxx为设备连接信息怎么使用sql查询数据昨天在线时间

原文地址: https://www.cveoy.top/t/topic/EMI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录