WITH status(status, status_id, probability_pc) as (VALUES ('Закрыта неуспешно',7,0),('Закрыта успешно',6,100),('Договор подписан',5,100),('Договор на подписании',15,90),('Договор на согласовании',12,70), ('Тестирование',8,50),('Отправлено ТКП',10,20),('Внутреннее согласование',37,10),('Проработка решения',4,10),('Сбор потребностей',1,0) ), line as ( SELECT siv.__id as siv_uid, siv.discount, siv.type as line_pricing_model_id ,siv.hash as line_key, siv.is_actual as siv_is_actual ,siv.version::numeric as line_version ,d.__index as deal_index ,d._companies ,a.index as agreement_version ,siv.date_nop::date as dt_from ,siv.date_end::date as dt_to ,siv.is_easy as is_simple ,siv.cnt -- should mutiliply ,s.probability_pc ,a.__id as agreement_uid, a.contract_uid, a.is_actual as agreement_is_actual, a.deal_uid ,d.__name as deal, d.__status_status as deal_status_id --,c.__name as contract ,siv.user_description ,siv.params --,(SELECT sum(p.price*p.cnt*(100.0-COALESCE(p.discount,0.0))/100.0) FROM elma.service_parametrs p WHERE(p.__id = ANY (siv.params))) as cost FROM elma.deals_services siv JOIN elma.deals d on (d.__id = ANY(siv.deal)) JOIN status s on (d.__status_status=s.status_id) LEFT OUTER JOIN elma.additional_agreements a on (a.__id = ANY(siv.additional_agreement)) WHERE siv.is_actual AND siv."__deletedAt" IS NULL AND d."__deletedAt" IS NULL AND a."__deletedAt" IS NULL AND a.is_actual AND siv.type IN (2,3) ), component as ( SELECT price*cnt*(100.0-COALESCE(discount,0))/100.0 as cost ,price ,cnt ,code ,__id FROM elma.service_parametrs where "__deletedAt" IS NULL ), stair as ( -- рабочая лесенка (инстансы строк, имеющие нетривиальную вероятность) select * FROM ( SELECT *, MIN(dt_from) OVER (PARTITION BY line_key ORDER BY deal_index desc) running_min_dt FROM line --WHERE probability_pc > 0 ) t WHERE t.dt_from = t.running_min_dt ), alloc as (select c."WZ" as wz , round(sum(c."VM_RAM_Allocated")) as ram , round(sum(CASE WHEN "VM_is_ON" > 0 THEN c."VM_RAM_Allocated" ELSE 0 END)) as ram_on , round(sum(c."VM_vCPU_count")) as cpu , round(sum(CASE WHEN "VM_is_ON" > 0 THEN c."VM_vCPU_count" ELSE 0 END)) as cpu_on from vmreports.compute c where ts=(select max(ts) from vmreports.compute) group by c."WZ" ), disk_alloc as (select c."WZ" as wz , round(sum(c."Disk_Allocated")) as disk_alloc from vmreports.storage c where ts=(select max(ts) from vmreports.storage) group by c."WZ" ), sold_ram as (SELECT z.id_klienta as WZ, z.__name as client, round(sum(c.cnt*o.cnt)) as quantity ,count(*) as lines, STRING_AGG(c.code,', ') as codes /*,o.line_key, o.probability_pc, dt_next, o.deal_uid, o.deal, o.agreement_uid, o.line_pricing_model_id,o.dt_from, o.dt_to*/ FROM stair o JOIN elma.companies z on (o._companies=z.__id) LEFT OUTER JOIN component c on (c.__id = ANY (o.params)) WHERE c.code LIKE 'iaas.ngc.%.ram-_' GROUP BY z.id_klienta, z.__name ), sold_cpu as (SELECT z.id_klienta as WZ, z.__name as client, round(sum(c.cnt*o.cnt)) as quantity ,count(*) as lines, STRING_AGG(c.code,', ') as codes /*,o.line_key, o.probability_pc, dt_next, o.deal_uid, o.deal, o.agreement_uid, o.line_pricing_model_id,o.dt_from, o.dt_to*/ FROM stair o JOIN elma.companies z on (o._companies=z.__id) LEFT OUTER JOIN component c on (c.__id = ANY (o.params)) WHERE c.code LIKE 'iaas.ngc.%.vcpu-_' GROUP BY z.id_klienta, z.__name ), sold_disk as (SELECT z.id_klienta as WZ, z.__name as client, round(sum(c.cnt*o.cnt)) as quantity ,count(*) as lines, STRING_AGG(c.code,', ') as codes /*,o.line_key, o.probability_pc, dt_next, o.deal_uid, o.deal, o.agreement_uid, o.line_pricing_model_id,o.dt_from, o.dt_to*/ FROM stair o JOIN elma.companies z on (o._companies=z.__id) LEFT OUTER JOIN component c on (c.__id = ANY (o.params)) WHERE c.code SIMILAR TO 'iaas.ngc.%.(ssd|fstssd|sata)-_' GROUP BY z.id_klienta, z.__name ), deal_stat as ( select STRING_AGG(distinct deal_status_id::text,', ') as status_ids , z.id_klienta as WZ from line o join elma.companies z on (o._companies=z.__id) GROUP BY z.id_klienta ) select r.wz as wz_sold, r.client as client_sold, a.wz as wz_alloc, ds.status_ids, r.codes as ram_codes, r.quantity as ram_sold, a.ram as ram_alloc, a.ram_on as ram_alloc_on, c.codes as cpu_codes, c.quantity as cpu_sold, a.cpu as cpu_alloc, a.cpu_on as cpu_alloc_on, d.quantity as disk_sold, da.disk_alloc, d.codes as disk_codes from sold_ram r join deal_stat ds on (r.wz=ds.wz) join sold_cpu c on (r.wz=c.wz) left join sold_disk d on (r.wz=d.wz) full join alloc a on (r.wz=a.wz) left join disk_alloc da on (a.wz=da.wz) --where s.quantity=a.ram order by 1,3 --select * from vmreports.compute where "WZ"='WZ01005' --select * from vmreports.compute where "WZ"='WZ01038' AND --select distinct "WZ" from vmreports.compute a where not exists (select * from elma.companies z where lower(trim(a."WZ"))=lower(trim(z.id_klienta))) --select distinct "WZ" from vmreports.compute a where not exists (select * from elma.companies z where a."WZ"=z.id_klienta) --select * from elma.companies where id_klienta='WZ00114' --select * from vmreports.compute where "WZ"='WZ00114' --select * from vmreports.compute where "WZ"='WZ00195' --select d.* from elma.companies z join elma.deals d on (z.__id=d._companies) where id_klienta='WZ03378' --select aa.* from elma.additional_agreements aa join elma.aggrements a on (aa.contract_uid=a.__id) join elma.companies z on (a.company_uid=z.__id)where id_klienta='WZ03378'