029 reconciliation
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
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'
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user