with max_reasons as (
select
row_number () over () as row_num,
svpm.name,
count (row_id) filter (where postpone_reason_1 >= 1) as "1",
count (row_id) filter (where postpone_reason_2 >= 1) as "2",
count (row_id) filter (where postpone_reason_3 >= 1) as "3",
count (row_id) filter (where postpone_reason_4 >= 1) as "4",
count (row_id) filter (where postpone_reason_5 >= 1) as "5",
count (row_id) filter (where postpone_reason_6 >= 1) as "6",
count (row_id) filter (where postpone_reason_7 >= 1) as "7",
count (row_id) filter (where postpone_reason_8 >= 1) as "8"
from v_additional_summary vas
join order_control.sp_vice_prime_minister svpm
on svpm.id = vas.filter_vice_prime_minister
and not svpm.obsolete
where vas.group_type = 'order'
group by svpm.name, svpm.id
order by svpm.id
)
select '1' as "№",
'2' as "ВИЦЕ-ПРЕМЬЕР",
'3' as "СРЕДНЯЯ ДЛИТЕЛЬНОСТЬ ПОРУЧЕНИЯ",
'4' as "СРЕДНЕЕ КОЛИЧЕСТВО ПЕРЕНОСОВ СРОКОВ",
'5' as "САМАЯ АКТУАЛЬНАЯ ПРИЧИНА ПЕРЕНОСА",
'6' as "ПОРУЧЕНИЯ НА ИСПОЛНЕНИИ ПОД РИСКОМ",
'7' as "ОБЩЕЕ КОЛИЧЕСТВО ПОРУЧЕНИЙ",
'8' as "ДОЛЯ ПОРУЧЕНИЙ ПОД РИСКОМ ОТ ОБЩЕГО ЧИСЛА",
'9' as "КОЛИЧЕСТВО ВЫЯВЛЕННЫХ РИСКОВ"
union all
(select row_number () over () as row_num,
svpm.name,
coalesce (round(avg (vas.avg_duration), 0), 0),
coalesce (round(avg (vas.avg_deadline_postponement), 0), 0),
case
when r."1" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не завершена проработка вопроса'
when r."2" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не завершены процедуры'
when r."3" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не завершены строительство, ввод в эксплуатацию, поставка оборудования'
when r."4" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не обеспечено финансирование'
when r."5" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не завершено согласование'
when r."6" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не завершена подготовка проекта документа'
when r."7" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Не исполнены контрактные обязательства подрядчиками'
when r."8" = greatest (r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8") then 'Иное (ручной ввод)'
end as "Причины переносов",
count (distinct vs.row_id) filter (where vs.risk_status_executing = 1) as executing_risk_order,
count (distinct vs.row_id) filter (where vs.status_executing = 1) as executing_order,
round (coalesce ((count (distinct vs.row_id) filter (where vs.under_risk = 1)::numeric) / (count (distinct vs.row_id))::numeric * 100, 0), 2) as risk_procent,
(ri."1" + ri."2" + ri."3" + ri."4" + ri."5" + ri."6") as "Количество выявленных рисков"
from order_control.v_additional_summary vas
join order_control.sp_vice_prime_minister svpm
on svpm.id = vas.filter_vice_prime_minister
and not svpm.obsolete
join v_summary vs
on vas.filter_vice_prime_minister = vs.filter_vice_prime_minister
and vs.group_type = 'order'
join max_reasons r
on r.name = svpm.name
join max_reasons ri
on ri.name = svpm.name
where vas.group_type = 'order'
group by svpm.name, svpm.id, r."1", r."2", r."3", r."4", r."5", r."6", r."7", r."8",
ri."1", ri."2", ri."3", ri."4", ri."5", ri."6"
order by svpm.id);
у меня может случиться такая ситуация, что может быть несколько одинаковых значений в полях, где я высчитываю greatest, как мне выводить поля с одинаковым значением через запятую?