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 ,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 ,siv.user_description ,siv.params 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 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 s.probability_pc >= 50 --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 ,COALESCE(( LEAD(dt_from) OVER ( PARTITION BY line_key ORDER BY dt_from ,deal_index ) ), ( )) dt_next FROM line WHERE probability_pc > 0 ) t WHERE t.dt_from = t.running_min_dt ) ,line_expanded AS ( SELECT line.* ,unnest(line.params) AS param_id FROM line ) ----------------------------- ,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 ,STRING_AGG(DISTINCT "Organization_Status",',') as organization_status ,COUNT(DISTINCT "Organization_UUID") as org_count 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 ,z.__id AS company_uid ,round(sum(c.cnt * o.cnt)) AS quantity ,count(*) AS lines ,STRING_AGG(DISTINCT c.code, ', ' ORDER BY c.code) AS codes FROM stair o JOIN elma.companies z ON o._companies = z.__id --LEFT JOIN component c on (c.__id = ANY (o.params)) LEFT JOIN line_expanded e ON o.siv_uid = e.siv_uid LEFT JOIN component c ON c.__id = e.param_id WHERE o.dt_from <= AND ( < o.dt_next) --c.code SIMILAR TO 'iaas.(ngc|dcp).%.ram-_' AND (c.code LIKE 'iaas.ngc.%.ram-_' OR c.code LIKE 'iaas.dcp.%.ram-_') AND c.cnt <> 0 AND o.cnt <> 0 GROUP BY z.id_klienta ,z.__id ,z.__name ) ------------------------------ ,sold_cpu AS ( SELECT z.id_klienta AS WZ ,z.__name AS client ,z.__id AS company_uid ,round(sum(c.cnt * o.cnt)) AS quantity ,count(*) AS lines ,STRING_AGG(DISTINCT c.code, ', ' ORDER BY c.code) AS codes FROM stair o JOIN elma.companies z ON (o._companies = z.__id) LEFT JOIN line_expanded e ON o.siv_uid = e.siv_uid LEFT JOIN component c ON (c.__id = e.param_id) WHERE o.dt_from <= AND ( < o.dt_next) --c.code SIMILAR TO 'iaas.(ngc|dcp).%.vcpu%-_' AND ( c.code LIKE 'iaas.ngc.%.vcpu%-_' OR c.code LIKE 'iaas.dcp.%.vcpu%-_' ) AND c.cnt <> 0 AND o.cnt <> 0 GROUP BY z.id_klienta ,z.__id ,z.__name ) --------------------------------- ,sold_disk AS ( SELECT z.id_klienta AS WZ ,z.__name AS client ,z.__id AS company_uid ,round(sum(c.cnt * o.cnt)) AS quantity ,count(*) AS lines ,STRING_AGG(DISTINCT c.code, ', ' ORDER BY c.code) AS codes FROM stair o JOIN elma.companies z ON (o._companies = z.__id) --LEFT JOIN component c ON c.__id = o.param_id --LEFT JOIN component c on (c.__id = ANY (o.params)) LEFT JOIN line_expanded e ON o.siv_uid = e.siv_uid LEFT JOIN component c ON c.__id = e.param_id WHERE o.dt_from <= AND ( < o.dt_next) --c.code SIMILAR TO 'iaas.(ngc|dcp).%.(ssd|fstssd|sata)-_' AND ( c.code LIKE 'iaas.ngc.%.ssd-_' OR c.code LIKE 'iaas.dcp.%.ssd-_' OR c.code LIKE 'iaas.ngc.%.fstssd-_' OR c.code LIKE 'iaas.dcp.%.fstssd-_' OR c.code LIKE 'iaas.ngc.%.sata-_' OR c.code LIKE 'iaas.dcp.%.sata-_' ) AND c.cnt <> 0 AND o.cnt <> 0 GROUP BY z.id_klienta ,z.__id ,z.__name ) -------------------------------- ,sold_gpu AS ( SELECT z.id_klienta AS WZ ,z.__name AS client ,z.__id AS company_uid ,round(sum(c.cnt * o.cnt)) AS quantity ,count(*) AS lines ,STRING_AGG(DISTINCT c.code, ', ' ORDER BY c.code) AS codes FROM stair o JOIN elma.companies z ON (o._companies = z.__id) --LEFT JOIN component c ON c.__id = o.param_id --LEFT JOIN component c on (c.__id = ANY (o.params)) LEFT JOIN line_expanded e ON o.siv_uid = e.siv_uid LEFT JOIN component c ON c.__id = e.param_id WHERE o.dt_from <= AND ( < o.dt_next) --c.code SIMILAR TO 'iaas.(ngc|dcp).%.vcpu%-_' AND ( c.code LIKE 'iaas.ngc.%.gpu%-_' OR c.code LIKE 'iaas.dcp.%.gpu%-_' ) AND c.cnt <> 0 AND o.cnt <> 0 GROUP BY z.id_klienta ,z.__id ,z.__name ) ------------------------------- ,gpu_alloc AS ( SELECT c."ClientID" AS wz , -- json_agg("GPU") as gpu, string_agg("GPU"::TEXT || ' ' || "OrgStatus", ', ') AS gpu ,count(*) AS gpu_alloc FROM vmreports.vm_gpu c WHERE ts = ( SELECT max(ts) FROM vmreports.vm_gpu ) GROUP BY c."ClientID" ) -------------------------------- ,deal_stat AS ( SELECT STRING_AGG(DISTINCT deal_status_id::TEXT, ', ' ORDER BY deal_status_id::TEXT) AS status_ids ,ARRAY_AGG(DISTINCT deal_status_id ORDER BY deal_status_id) AS ar_status_ids ,STRING_AGG(DISTINCT line_pricing_model_id::TEXT, ', ' ORDER BY line_pricing_model_id::TEXT) AS line_pricing_model_ids ,ARRAY_AGG(DISTINCT line_pricing_model_id ORDER BY line_pricing_model_id) AS ar_line_pricing_model_id ,z.id_klienta AS WZ FROM stair d --LEFT JOIN LATERAL unnest(d.params) AS arr(param_id) ON TRUE --JOIN component p ON (p.__id = arr.param_id) JOIN elma.companies z ON (d._companies = z.__id) WHERE d.dt_from <= AND ( < d.dt_next) GROUP BY z.id_klienta ) ,manager AS ( select z.id_klienta as wz, u.__name as manager, u.email, u.__status_status as status from elma.companies z join elma.comp_users_ext u on (z.responsible=u.__id) ) select r.wz as wz_sold r.client as client_sold r.company_uid a.wz as wz_alloc u.manager u.email u.status a.organization_status ds.status_ids ds.line_pricing_model_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.codes as disk_codes d.quantity as disk_sold da.disk_alloc g.codes as gpu_codes g.quantity as gpu_sold ga.gpu_alloc ga.gpu z.__name as alloc_company z.__id as alloc_company_uid ds.ar_status_ids from sold_ram r join deal_stat ds on (lower(r.wz)=lower(ds.wz)) join sold_cpu c on (lower(r.wz)=lower(c.wz)) left join sold_disk d on (lower(r.wz)=lower(d.wz)) left join sold_gpu g on (lower(r.wz)=lower(g.wz)) full join alloc a on (lower(r.wz)=lower(a.wz)) left join disk_alloc da on (a.wz=da.wz) left join gpu_alloc ga on (a.wz=ga.wz) left join elma.companies z on (lower(a.wz)=lower(z.id_klienta)) left join manager u on (lower(coalesce(r.wz,a.wz))=lower(u.wz)) where 1=1 order by Сверка CRM - Cloud select sum(cpu_sold) as cpu_sold ,sum(cpu_alloc) as cpu_alloc ,sum(cpu_alloc_on) as cpu_alloc_on ,sum(ram_sold) as ram_sold ,sum(ram_alloc) as ram_alloc ,sum(ram_alloc_on) as ram_alloc_on ,sum(disk_sold) as disk_sold ,sum(disk_alloc) as disk_alloc ,sum(gpu_sold) as gpu_sold from qRead
#wz_sold# #client_sold# #alloc_company# #wz_alloc# title="не работает"> class="err">#manager# #status_ids# #organization_status# #line_pricing_model_ids# #cpu_codes# style="background:lightgreen;" style="background:yellow;">#cpu_sold# style="background:lightcoral;">#cpu_alloc# style="background:lightcoral;">#cpu_alloc_on# #ram_codes# style="background:lightgreen;" style="background:yellow;">#ram_sold# style="background:lightcoral;">#ram_alloc# style="background:lightcoral;">#ram_alloc_on# #disk_codes# style="background:lightgreen;" style="background:yellow;">#disk_sold# style="background:lightcoral;">#disk_alloc# #gpu_codes# style="background:lightgreen;" style="background:yellow;">#gpu_sold# style="background:lightcoral;">#gpu_alloc# #gpu#
Итого style="background:lightgreen;">#cpu_sold# style="background:lightcoral;">#cpu_alloc# style="background:lightcoral;">#cpu_alloc_on# style="background:lightgreen;">#ram_sold# style="background:lightcoral;">#ram_alloc# style="background:lightcoral;">#ram_alloc_on# style="background:lightgreen;">#disk_sold# style="background:lightcoral;">#disk_alloc# #gpu_sold#