forecast_api/route_sql/scale_vd.sql

297 lines
8.4 KiB
MySQL
Raw Permalink Normal View History

2019-03-21 16:50:51 -04:00
WITH
target AS (select incr_qty qincr)
,testv AS (
SELECT
2020-02-13 02:25:24 -05:00
sum(units) tot
,sum(units) FILTER (WHERE iter IN ('copy','plan','diff')) base
,sum(units) FILTER (WHERE module = 'new basket') newpart
FROM
2020-02-13 02:25:24 -05:00
rlarp.osm_pool p
WHERE
-----------------scenario----------------------------
where_clause
-----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
2020-02-13 02:25:24 -05:00
AND order_date <= ship_date
)
,flagv AS (
SELECT
tot
,base
,newpart
,CASE WHEN tot = 0 THEN
CASE WHEN base = 0 THEN
CASE WHEN newpart = 0 THEN
'unclean data. tested -> does not exist'
ELSE
'scale new part'
END
ELSE
'scale copy'
END
ELSE
'scale all'
END flag
FROM
testv
)
--ever need receive a target of -0- qty but value <> 0?
2019-03-21 16:50:51 -04:00
,basemix AS (
2020-02-13 02:25:24 -05:00
SELECT
fspr
,plnt ---master data
2019-04-03 12:17:54 -04:00
,promo --history date mix
2019-03-21 16:50:51 -04:00
,terms
2020-02-13 02:25:24 -05:00
,bill_cust_descr --history cust mix
,ship_cust_descr --history cust mix
,dsm
,quota_rep_descr --master data
,director
,billto_group --master data
,shipto_group
2019-03-21 16:50:51 -04:00
,chan --master data
2020-02-13 02:25:24 -05:00
,chansub
,chan_retail
,part
,part_descr
,part_group
,branding
,majg_descr
,ming_descr
,majs_descr
,mins_descr
,segm
,substance
2019-03-21 16:50:51 -04:00
,fs_line --master data
,r_currency --history cust mix
,r_rate --master data
,c_currency --master data
,c_rate --master data
2020-02-13 02:25:24 -05:00
,sum(coalesce(units,0)) units --history value
,sum(coalesce(value_loc,0)) value_loc --history value
,sum(coalesce(value_usd,0)) value_usd --0
,sum(coalesce(cost_loc,0)) cost_loc --history part mix
,sum(coalesce(cost_usd,0)) cost_usd
2019-03-21 16:50:51 -04:00
,calc_status --0
,flag --0
2020-02-13 02:25:24 -05:00
,order_date --history date mix
2019-03-21 16:50:51 -04:00
,order_month
2020-02-13 02:25:24 -05:00
,order_season
,request_date --history date mix
2019-03-21 16:50:51 -04:00
,request_month
2020-02-13 02:25:24 -05:00
,request_season
,ship_date --history date mix
,ship_month
,ship_season
2019-03-21 16:50:51 -04:00
FROM
2020-02-13 02:25:24 -05:00
rlarp.osm_pool
2019-03-21 16:50:51 -04:00
WHERE
-----------------scenario----------------------------
where_clause
-----------------additional params-------------------
AND CASE (SELECT flag FROM flagv)
WHEN 'scale all' THEN true
WHEN 'scale copy' THEN iter IN ('copy','plan','diff')
WHEN 'scale new part' THEN module = 'new basket'
END
2019-03-21 16:50:51 -04:00
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
2020-02-13 02:25:24 -05:00
AND order_date <= ship_date
2019-03-21 16:50:51 -04:00
GROUP BY
fspr
2020-02-13 02:25:24 -05:00
,plnt ---master data
,promo --history date mix
2019-03-21 16:50:51 -04:00
,terms
2020-02-13 02:25:24 -05:00
,bill_cust_descr --history cust mix
,ship_cust_descr --history cust mix
,dsm
,quota_rep_descr --master data
,director
,billto_group --master data
,shipto_group
2019-03-21 16:50:51 -04:00
,chan --master data
2020-02-13 02:25:24 -05:00
,chansub
,chan_retail
,part
,part_descr
,part_group
,branding
,majg_descr
,ming_descr
,majs_descr
,mins_descr
,segm
,substance
2019-03-21 16:50:51 -04:00
,fs_line --master data
,r_currency --history cust mix
,r_rate --master data
,c_currency --master data
,c_rate --master data
,calc_status --0
,flag --0
2020-02-13 02:25:24 -05:00
,order_date --history date mix
2019-03-21 16:50:51 -04:00
,order_month
2020-02-13 02:25:24 -05:00
,order_season
,request_date --history date mix
2019-03-21 16:50:51 -04:00
,request_month
2020-02-13 02:25:24 -05:00
,request_season
,ship_date --history date mix
,ship_month
,ship_season
2019-03-21 16:50:51 -04:00
)
--SELECT * FROM basemix
2019-03-21 16:50:51 -04:00
,scale AS (
SELECT
(SELECT qincr::numeric FROM target) incr
2020-02-13 02:25:24 -05:00
,(SELECT sum(value_loc *r_rate) FROM basemix) base
,(SELECT qincr FROM target)/(SELECT SUM(units) FROM basemix) factor
2019-03-21 16:50:51 -04:00
)
--select * from scale
2020-02-13 02:25:24 -05:00
,log AS (
INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING *
)
2019-03-21 16:50:51 -04:00
,final AS (
2020-02-13 02:25:24 -05:00
SELECT
fspr
,plnt ---master data
,promo --history date mix
,terms
,bill_cust_descr --history cust mix
,ship_cust_descr --history cust mix
,dsm
,quota_rep_descr --master data
,director
,billto_group --master data
,shipto_group
,chan --master data
,chansub
,chan_retail
,part
,part_descr
,part_group
,branding
,majg_descr
,ming_descr
,majs_descr
,mins_descr
,segm
,substance
2020-02-13 02:25:24 -05:00
,fs_line --master data
,r_currency --history cust mix
,r_rate --master data
,c_currency --master data
,c_rate --master data
,round(units*s.factor ,2) units
,round(value_loc*s.factor,2) value_loc
,round(value_usd*s.factor,2) value_usd
,round(cost_loc*s.factor ,2) cost_loc
,round(cost_usd*s.factor ,2) cost_usd
2020-02-13 02:25:24 -05:00
,calc_status --0
,flag --0
,order_date --history date mix
,order_month
,order_season
,request_date --history date mix
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season
,'replace_version' "version"
,'replace_source'||' volume' iter
,log.id
2020-02-18 14:47:46 -05:00
,COALESCE(log.doc->>'tag','') "tag"
2020-02-18 15:35:56 -05:00
,log.doc->>'message' "comment"
,log.doc->>'type' module
2019-03-21 16:50:51 -04:00
FROM
basemix b
CROSS JOIN scale s
CROSS JOIN log
2019-03-21 16:50:51 -04:00
)
--select sum(value_usd), count(*) from final
, ins AS (
2020-02-13 02:25:24 -05:00
INSERT INTO rlarp.osm_pool SELECT * FROM final RETURNING *
2019-03-21 16:50:51 -04:00
)
,insagg AS (
2020-02-13 02:25:24 -05:00
SELECT
---------customer info-----------------
bill_cust_descr
,billto_group
,ship_cust_descr
,shipto_group
,quota_rep_descr
,director
,segm
,substance
2020-02-13 02:25:24 -05:00
,chan
,chansub
---------product info------------------
,majg_descr
,ming_descr
,majs_descr
,mins_descr
--,brand
--,part_family
,part_group
,branding
--,color
,part_descr
---------dates-------------------------
,order_season
,order_month
,ship_season
,ship_month
,request_season
,request_month
,promo
,version
,iter
,logid
2020-02-18 14:47:46 -05:00
,tag
2020-02-18 15:35:56 -05:00
,comment
2020-02-13 02:25:24 -05:00
--------values-------------------------
,sum(value_loc) value_loc
,sum(value_usd) value_usd
,sum(cost_loc) cost_loc
,sum(cost_usd) cost_usd
,sum(units) units
FROM
ins
GROUP BY
---------customer info-----------------
bill_cust_descr
,billto_group
,ship_cust_descr
,shipto_group
,quota_rep_descr
,director
,segm
,substance
2020-02-13 02:25:24 -05:00
,chan
,chansub
---------product info------------------
,majg_descr
,ming_descr
,majs_descr
,mins_descr
--,brand
--,part_family
,part_group
,branding
--,color
,part_descr
---------dates-------------------------
,order_season
,order_month
,ship_season
,ship_month
,request_season
,request_month
,promo
,version
,iter
,logid
2020-02-18 14:47:46 -05:00
,tag
2020-02-18 15:35:56 -05:00
,comment
2019-03-21 16:50:51 -04:00
)
SELECT json_agg(row_to_json(insagg)) x from insagg