-- 终端离线状态监控
SELECT
region_code,
st_name,
count(DISTINCT dev_name) as total_terminals,
countIf(last_online < now() - INTERVAL 5 MINUTE) as offline_count,
offline_count / total_terminals as offline_rate
FROM (
SELECT
region_code, st_name, dev_name,
max(soe_time) as last_online
FROM soe_events
WHERE soe_time >= now() - INTERVAL 1 HOUR
GROUP BY region_code, st_name, dev_name
)
GROUP BY region_code, st_name
HAVING offline_rate > 0.1;
-- 开关拒动异常检测
SELECT
st_name,
dev_name,
countIf(name = 'BR' AND status = '0') as refuse_count,
max(soe_time) as last_refuse_time
FROM soe_events
WHERE soe_time >= today()
AND (name = 'BR' OR name LIKE '%拒动%')
GROUP BY st_name, dev_name
HAVING refuse_count > 0
ORDER BY refuse_count DESC;