井盖监测:
1、数据库表结构
数据来源:井盖监测,多个井盖向服务器发送井盖的状态信息(井盖关、井盖开),存储到数据库中。
目前想要得到的结果是:同一个井盖向服务器传的状态可能都是井盖关,直到井盖开,前面的井盖关只需要最后一个。井盖开后一段时间内井盖向服务器传的都是井盖关 直到传井盖开,前面的井盖关只要最后一条数据。2、结果
1、数据库表结构
数据来源:井盖监测,多个井盖向服务器发送井盖的状态信息(井盖关、井盖开),存储到数据库中。
目前想要得到的结果是:同一个井盖向服务器传的状态可能都是井盖关,直到井盖开,前面的井盖关只需要最后一个。井盖开后一段时间内井盖向服务器传的都是井盖关 直到传井盖开,前面的井盖关只要最后一条数据。2、结果
参考下面这个SQL:
WITH TMP AS
(SELECT CASE
WHEN LEVEL <= 5 THEN
'关'
WHEN LEVEL <= 10 THEN
'开'
WHEN LEVEL <= 15 THEN
'关'
WHEN LEVEL <= 20 THEN
'开'
ELSE
'关'
END STATUS, LEVEL AS L
FROM DUAL
CONNECT BY LEVEL <= 30)
SELECT MIN(L) AS OPEN_TIME, CLOSE_TIME
FROM (SELECT T.*,
LEAD(CASE
WHEN STATUS = '开' THEN
NULL
ELSE
L
END IGNORE NULLS) OVER(ORDER BY L) AS CLOSE_TIME
FROM TMP T)
WHERE STATUS = '开'
GROUP BY CLOSE_TIME