Обновить hardwareAvailabilityReport.sql

This commit is contained in:
2026-06-28 21:41:13 +00:00
parent 6bf618371f
commit 3f9d03a9b6
+12 -12
View File
@@ -39,8 +39,8 @@ checks AS (
-- Исключаем оборудование, начинающееся на IRZ (любой регистр) -- Исключаем оборудование, начинающееся на IRZ (любой регистр)
--AND UPPER(h.host) NOT LIKE 'IRZ%' --AND UPPER(h.host) NOT LIKE 'IRZ%'
-- Период: май 2026 года (измените под свои даты) -- Период: май 2026 года (измените под свои даты)
--and hinv.notes = 'ОБЪЕКТ № 12' --and hinv.notes = 'ОБЪЕКТ № 5'
--and hinv."name" = 'Видеокамера Trassir TR-D6254IR15' --and hinv."name" = 'Метеостанция Кондор'
and CAST(nullif(regexp_replace(hinv.notes, 'ОБЪЕКТ №\s*', '', 'g'),'') as INTEGER) and CAST(nullif(regexp_replace(hinv.notes, 'ОБЪЕКТ №\s*', '', 'g'),'') as INTEGER)
between 1 and 85 --in (44,77,43,54,27,48,12,49,65,9,60,35,38,1,51,41,53,84,8) between 1 and 85 --in (44,77,43,54,27,48,12,49,65,9,60,35,38,1,51,41,53,84,8)
AND TO_TIMESTAMP(hx.clock) >= to_date(${start_dt}, 'yyyymmdd') - interval '1 day' AND TO_TIMESTAMP(hx.clock) >= to_date(${start_dt}, 'yyyymmdd') - interval '1 day'
@@ -111,8 +111,8 @@ grouped_intervals AS (
equipment_type, equipment_type,
object_number, object_number,
coordinates, coordinates,
MIN(date_trunc('second', check_time)) AS check_time, MIN(check_time) AS check_time,
MAX(date_trunc('second', next_check_time)) AS next_check_time, MAX(next_check_time) AS next_check_time,
MAX(status) AS status MAX(status) AS status
FROM intervals FROM intervals
GROUP BY GROUP BY
@@ -126,12 +126,12 @@ grouped_intervals AS (
daily_stats AS ( daily_stats AS (
select *, select *,
extract('hour' from available_hours)::int AS a_h, case when unavailable_hours is not null then coalesce(extract('hour' from available_hours)::int,0) else 24 end AS a_h,
extract('minute' from available_hours)::int AS a_m, coalesce(extract('minute' from available_hours)::int,0) AS a_m,
extract('second' from available_hours)::int AS a_s, coalesce(extract('second' from available_hours)::int,0) AS a_s,
extract('hour' from unavailable_hours)::int AS u_h, case when available_hours is not null then coalesce(extract('hour' from unavailable_hours)::int,0) else 24 end AS u_h,
extract('minute' from unavailable_hours)::int AS u_m, coalesce(extract('minute' from unavailable_hours)::int,0) AS u_m,
extract('second' from unavailable_hours)::int AS u_s coalesce(extract('second' from unavailable_hours)::int,0) AS u_s
from from
( (
SELECT SELECT
@@ -142,8 +142,8 @@ daily_stats AS (
coordinates, coordinates,
DATE(check_time) AS check_date, DATE(check_time) AS check_date,
sum(case when status = 1 then next_check_time - check_time else null end) AS available_hours, sum(case when status = 1 then next_check_time - check_time else null end) AS available_hours,
sum(case when status = 0 then next_check_time - check_time else null end) AS unavailable_hours, sum(case when status = 0 then next_check_time - check_time else null end) AS unavailable_hours
sum(next_check_time - check_time) AS all_hours --sum(next_check_time - check_time) AS all_hours
FROM grouped_intervals FROM grouped_intervals
GROUP BY GROUP BY
host_name, host_name,