/* Сводный отчет по выпискам 199fa3a0-b767-46a5-bf00-e5ec5df4c67d */
with counting as (
select
 case
  when format = 1 then 'ВЫПИСКА из Единого реестра сведений о гражданах'
  when format = 2 then 'ВЫПИСКА из Реестра направленных (врученных) повесток'
  else format::varchar
 end "Вид выписки",
 coalesce(count(*) filter (where method = 'ERVU'), 0) "p5 Запрошено выписок, в ЕРВУ, количество",
-- array_agg(id) filter (where method = 'ERVU') "p5 ids",
 coalesce(count(*) filter (where method = 'SMEV'), 0) "p7 Запрошено выписок, в ЛК РП, количество",
-- array_agg(id) filter (where method = 'SMEV') "p7 ids",
 coalesce(count(*) filter (where method = 'ERVU' and status = 'RECEIVED'), 0) "p10 Предоставлено выписок из числа запрошенных, в ЕРВУ, количество",
-- array_agg(id) filter (where method = 'ERVU' and status = 'RECEIVED') "p10 ids",
 coalesce(count(*) filter (where method = 'SMEV' and status = 'RECEIVED'), 0) "p12 Предоставлено выписок из числа запрошенных, в ЛК РП, количество",
-- array_agg(id) filter (where method = 'SMEV' and status = 'RECEIVED') "p12 ids",
 coalesce(count(*) filter (where status = 'ERROR'), 0) "p15 Выписки в статусе ошибки, Всего"
-- ,array_agg(id) filter (where status = 'ERROR') "p15 ids"
from recruit_extract
where case
  when (:from is null and :to is null) then true
  when (:from is null) then date <= :to
  when (:to is null) then date >= :from
  else date between :from and :to
 end
group by "Вид выписки"
order by count(*) desc, "Вид выписки"
) select
 "Вид выписки",
 null "f4 Запрошено выписок, Всего",
 "p5 Запрошено выписок, в ЕРВУ, количество",
-- "p5 ids"[1:50], -- debug column
 null "d6 Запрошено выписок, в ЕРВУ, доля",
 "p7 Запрошено выписок, в ЛК РП, количество",
-- "p7 ids"[1:50], -- debug column
 null "d8 Запрошено выписок, в ЛК РП, доля",
 /**/
 null "f9 Предоставлено выписок из числа запрошенных, Всего",
 "p10 Предоставлено выписок из числа запрошенных, в ЕРВУ, количество",
-- "p10 ids"[1:50], -- debug column
 null "d11 Предоставлено выписок из числа запрошенных, в ЕРВУ, доля",
 "p12 Предоставлено выписок из числа запрошенных, в ЛК РП, количество",
-- "p12 ids"[1:50], -- debug column
 null "d13 Предоставлено выписок из числа запрошенных, в ЛК РП, доля",
 null "d14 Предоставлено выписок из числа запрошенных, доля от количества запрошенных",
 /**/
 "p15 Выписки в статусе ошибки, Всего",
-- "p15 ids"[1:50], -- debug column
 null "d16 Выписки в статусе ошибки, доля от количества запрошенных"
from counting
union all
select
 'ИТОГО',
 null,
 coalesce(sum("p5 Запрошено выписок, в ЕРВУ, количество"), 0),
-- null, -- debug column
 null,
 coalesce(sum("p7 Запрошено выписок, в ЛК РП, количество"), 0),
-- null, -- debug column
 null,
 /**/
 null,
 coalesce(sum("p10 Предоставлено выписок из числа запрошенных, в ЕРВУ, количество"), 0),
-- null, -- debug column
 null,
 coalesce(sum("p12 Предоставлено выписок из числа запрошенных, в ЛК РП, количество"), 0),
-- null, -- debug column
 null,
 null,
 /**/
 coalesce(sum("p15 Выписки в статусе ошибки, Всего"), 0),
-- null, -- debug column
 null
from counting