41 lines
1.3 KiB
SQL
41 lines
1.3 KiB
SQL
SELECT
|
|
Active.id AS ID,
|
|
Active.eventtime AS `StartTimestamp`,
|
|
Clear.eventtime AS `EndTimestamp`,
|
|
CONCAT(
|
|
LPAD(FLOOR(duration_seconds / 3600), 2, '0'), ':',
|
|
LPAD(FLOOR((duration_seconds % 3600) / 60), 2, '0'), ':',
|
|
LPAD(duration_seconds % 60, 2, '0')
|
|
) AS Duration,
|
|
CONCAT(
|
|
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(Active.source, '/HMI/ALARMST', 1), ':/tag:', -1), '/', -1),
|
|
' - ',
|
|
SUBSTRING_INDEX(Active.source, ':/alm:', -1)
|
|
) AS Description,
|
|
CASE Active.priority
|
|
WHEN 0 THEN 'Diagnostic'
|
|
WHEN 1 THEN 'Low'
|
|
WHEN 2 THEN 'Medium'
|
|
WHEN 3 THEN 'High'
|
|
WHEN 4 THEN 'Critical'
|
|
ELSE 'Unknown'
|
|
END AS Priority,
|
|
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(Active.source, '/HMI/ALARMST', 1), ':/tag:', -1), '/', -1) AS Tag,
|
|
SUBSTRING_INDEX(SUBSTRING_INDEX(Active.source, '/tag:', -1), '/', 1) AS MCM
|
|
FROM (
|
|
SELECT
|
|
ae.id,
|
|
ae.eventtime,
|
|
ae.eventid,
|
|
ae.source,
|
|
ae.priority,
|
|
TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
|
|
FROM alarm_events ae
|
|
LEFT JOIN alarm_events ae_clear
|
|
ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1
|
|
WHERE ae.eventtype = 0
|
|
) AS Active
|
|
LEFT JOIN alarm_events Clear
|
|
ON Active.eventid = Clear.eventid AND Clear.eventtype = 1
|
|
ORDER BY Active.eventtime DESC;
|