#sql #postgresql #grafana
#sql #postgresql #grafana
Вопрос:
У меня создана панель мониторинга, где я могу получить время последнего сбоя с помощью таких условий, как (total_failed<>0), но это дает мне вывод как время, например, 10:20, но мне нужно, чтобы вывод был сгенерирован в виде «последний сбой 30 минут назад» путем вычисления (текущего времени- время сбоя) так что. Я могу показать это на панели мониторинга. Запрос задан —
SELECT
end_time AS "time",
(total_failed::integer)
FROM job
where
total_failed<>'0'
GROUP BY end_time,total_failed
Дайте мне знать, если кто-нибудь может помочь мне написать этот sql или представление этой панели мониторинга.
Комментарии:
1. Ваш код, безусловно, похож на Postgres, и если это так, то, пожалуйста, удалите другие несовместимые теги базы данных.
2. Конечно, сделано, но можете ли вы помочь мне найти решение
Ответ №1:
Возможно, эта комбинация age
extract
и CTE — это то, что вам нужно:
WITH data AS (
SELECT age(clock_timestamp(), end_time) AS ago,
total_failed::integer AS fail_count
FROM job
WHERE ...
)
SELECT extract(minutes FROM ago)
60 * extract(hours FROM ago) AS minutes_passed,
fail_count
FROM data;