046 versioning fixes
This commit is contained in:
+240
-229
@@ -24,234 +24,246 @@ WITH
|
||||
('Внутреннее согласование',37,10),
|
||||
('Проработка решения',4,10) ,
|
||||
('Сбор потребностей',1,0)
|
||||
),
|
||||
line_expanded 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 ,
|
||||
unnest(siv.params) as param_id
|
||||
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
|
||||
FROM
|
||||
line_expanded
|
||||
--line
|
||||
WHERE
|
||||
probability_pc > 0
|
||||
) t
|
||||
WHERE
|
||||
t.dt_from = t.running_min_dt
|
||||
AND ( t.dt_to > CURRENT_TIMESTAMP OR t.dt_to IS NULL )
|
||||
),
|
||||
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.compute)
|
||||
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 = o.param_id
|
||||
--LEFT JOIN component c on (c.__id = ANY (o.params))
|
||||
WHERE
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.ram-_'
|
||||
(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 component c on c.__id = o.param_id
|
||||
--LEFT JOIN component c on (c.__id = ANY (o.params))
|
||||
WHERE
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.vcpu%-_'
|
||||
(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))
|
||||
WHERE
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.(ssd|fstssd|sata)-_'
|
||||
(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
|
||||
WHERE
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.vcpu%-_'
|
||||
(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
|
||||
line_expanded o
|
||||
--line o
|
||||
join elma.companies z on (o._companies=z.__id)
|
||||
GROUP BY
|
||||
z.id_klienta
|
||||
)
|
||||
|
||||
|
||||
|
||||
)
|
||||
,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
|
||||
)
|
||||
), (
|
||||
SELECT CURRENT_TIMESTAMP + INTERVAL '1 day'
|
||||
)) dt_next
|
||||
FROM line
|
||||
WHERE probability_pc > 0
|
||||
) t
|
||||
WHERE t.dt_from = t.running_min_dt
|
||||
AND (
|
||||
t.dt_to > CURRENT_TIMESTAMP
|
||||
OR t.dt_to IS NULL
|
||||
)
|
||||
)
|
||||
,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
|
||||
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.COMPUTE
|
||||
)
|
||||
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
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.ram-_'
|
||||
(
|
||||
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 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
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.vcpu%-_'
|
||||
(
|
||||
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
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.(ssd|fstssd|sata)-_'
|
||||
(
|
||||
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
|
||||
--c.code SIMILAR TO 'iaas.(ngc|dcp).%.vcpu%-_'
|
||||
(
|
||||
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 <= CURRENT_TIMESTAMP
|
||||
AND (CURRENT_TIMESTAMP < d.dt_next)
|
||||
GROUP BY z.id_klienta
|
||||
)
|
||||
select
|
||||
<d:field_set titleMapOut="titleMap" lengthOut="fieldCount">
|
||||
<d:field title="WZ Elma">r.wz as wz_sold</d:field>
|
||||
@@ -368,7 +380,6 @@ S3 операции и трафик: <b>#dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M
|
||||
<th width="10%"><layout:column_head name="gpu"/></th>
|
||||
<!--- <th width="3%"><layout:column_head name="disk_sold"/></th> --->
|
||||
|
||||
|
||||
</layout:grid_head>
|
||||
</thead>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user