price_api/sql/price_pool.sql

129 lines
5.4 KiB
MySQL
Raw Normal View History

2023-10-17 16:04:41 -04:00
--CREATE OR REPLACE PROCEDURE rlarp.price_pool()
--LANGUAGE plpgsql AS
--$func$
--BEGIN
DROP TABLE IF EXISTS rlarp.price_pool_dev;
CREATE TABLE IF NOT EXISTS rlarp.price_pool_dev AS (
WITH
agg AS (
SELECT
o.customer
2023-11-01 15:12:18 -04:00
,substring(o.version,1,1) version
2023-10-17 16:04:41 -04:00
,o.chanwide
,o.nursery_region
2023-10-18 07:49:23 -04:00
,c.greenhouse_region
2023-10-17 16:04:41 -04:00
,m.part_group baseitem
,m.majg
,m.assc
,i.coltier
,'v1:' || rtrim(COALESCE(i.coltier, ''))|| '.' || rtrim(substring(COALESCE(i.branding, ''), 1, 1))|| '.' || rtrim(COALESCE(i.uomp, ''))|| '.' || rtrim(COALESCE(i.suffix, ''))|| '.' || rtrim(COALESCE(i.accs_ps, '')) v1dataseg
,_ds.dataseg v0dataseg
,o.oseas oseas
,round(sum(o.qty),0) units
,round(sum(o.sales_usd),0) sales_usd
,round(sum(COALESCE(tp.target_price,tq.target_price) * o.qty),2) target_price
FROM
rlarp.osm_stack o
INNER JOIN "CMS.CUSLG".itemm i ON
i.item = o.part
LEFT OUTER JOIN rlarp.molds m ON
m.stlc = i.stlc
LEFT OUTER JOIN _ds ON
_ds.colgrp = o.colgrp
AND _ds.brand = substring(i.branding,1,1)
LEFT OUTER JOIN pricequote.market_setavgprice tp ON
tp.season = (SELECT ssyr FROM rlarp.gld where drange @> current_date)
AND tp.country = 'ALL'
AND tp.geo = 'ALL'
AND tp.region = 'ALL'
AND tp.mold = i.stlc
AND tp.chan = 'DISTRIB DROP SHIP'
AND tp.data_segment = 'v1:' || rtrim(COALESCE(i.coltier, ''))|| '.' || rtrim(substring(COALESCE(i.branding, ''), 1, 1))|| '.' || rtrim(COALESCE(i.uomp, ''))|| '.' || rtrim(COALESCE(i.suffix, ''))|| '.' || rtrim(COALESCE(i.accs_ps, ''))
LEFT OUTER JOIN pricequote.market_setavgprice tq ON
tq.season = (SELECT ssyr FROM rlarp.gld where drange @> current_date)
AND tq.country = 'ALL'
AND tq.geo = 'ALL'
AND tq.region = 'ALL'
AND tq.mold = i.stlc
AND tq.chan = 'DISTRIB DROP SHIP'
AND tq.data_segment = _ds.dataseg
2023-10-18 07:49:23 -04:00
LEFT OUTER JOIN rlarp.cust c ON
c.code = CASE o.chan WHEN 'DIR' THEN o.bill_cust ELSE o.ship_cust END
2023-10-17 16:04:41 -04:00
WHERE
o.version <> '6/1 Order Book'
--AND o.part like 'SQL035%'
--AND o.calc_status <> 'CANCELED'
--AND o.fs_line = '41010'
--AND o.dsm <> 'PW'
--AND i.coltier <> 'C'
GROUP BY
o.customer
2023-11-01 15:12:18 -04:00
,substring(o.version,1,1)
2023-10-17 16:04:41 -04:00
,o.chanwide
,o.nursery_region
2023-10-18 07:49:23 -04:00
,c.greenhouse_region
2023-10-17 16:04:41 -04:00
,m.part_group
,m.majg
,m.assc
,i.coltier
,'v1:' || rtrim(COALESCE(i.coltier, ''))|| '.' || rtrim(substring(COALESCE(i.branding, ''), 1, 1))|| '.' || rtrim(COALESCE(i.uomp, ''))|| '.' || rtrim(COALESCE(i.suffix, ''))|| '.' || rtrim(COALESCE(i.accs_ps, ''))
,_ds.dataseg
,o.oseas
HAVING
round(sum(o.qty),0) > 0
AND round(sum(o.sales_usd)/sum(o.qty),5) > 0
)
,gsets AS (
SELECT
jsonb_strip_nulls(
jsonb_build_object(
2023-10-18 08:37:38 -04:00
'cust' ,customer
2023-11-01 15:12:18 -04:00
,'vers' ,version
2023-10-18 08:37:38 -04:00
,'chan' ,chanwide
,'nurs' ,nursery_region
,'ghse' ,greenhouse_region
,'mold' ,baseitem
,'v1ds' ,v1dataseg
,'v0ds' ,v0dataseg
2023-10-17 16:04:41 -04:00
)
) gset
2023-11-01 15:12:18 -04:00
,version
2023-10-17 16:04:41 -04:00
,oseas
,sum(units ) units
,sum(sales_usd) sales_usd
,round(sum(sales_usd )/sum(units),5) price_usd
,round(sum(target_price)/sum(units),5) target_price
,jsonb_agg(DISTINCT coltier) coltier
FROM
agg
2023-11-01 15:12:18 -04:00
GROUP BY
version
,GROUPING SETS (
-- oseas version, baseitem v0datseg chanwide customer region v1dataseg --
(oseas, version, baseitem, chanwide, v0dataseg, customer )
,(oseas, version, baseitem, chanwide, customer, v1dataseg )
,(oseas, version, baseitem, chanwide, v0dataseg )
,(oseas, version, baseitem, chanwide, v0dataseg, nursery_region )
,(oseas, version, baseitem, chanwide, v0dataseg, greenhouse_region )
,(oseas, version, baseitem, chanwide, v1dataseg )
,(oseas, version, baseitem, chanwide, v0dataseg, nursery_region )
,(oseas, version, baseitem, chanwide, v0dataseg, greenhouse_region )
2023-10-17 16:04:41 -04:00
)
)
SELECT
2023-11-01 15:12:18 -04:00
gset
2023-10-17 16:04:41 -04:00
,jsonb_object_agg(oseas,jsonb_build_object('units',units,'sales_usd',sales_usd,'price_usd',price_usd,'target_price',target_price)) season
,(SELECT JSONB_AGG(k.v ORDER BY k.v ASC) FROM jsonb_object_keys(gset) k(v)) agglevel
--,oseas
--,units
--,sales_usd
--,price_usd
FROM
gsets
2023-11-01 15:12:18 -04:00
WHERE
2023-10-17 16:04:41 -04:00
oseas IS NOT NULL
--AND gset @> jsonb_build_object('baseitem', 'XNS0T1G3')
GROUP BY
gset
) WITH DATA;