forecast_api/offline/new_cust_profile.pg.sql
2025-03-26 22:12:57 -04:00

201 lines
4.6 KiB
SQL

WITH
newc AS (
SELECT * FROM (VALUES
('Target'),
('BATTLEFIELD FARMS'),
('BYLANDS NURSERIES'),
('BRENTANOS TREE FARM'),
('QUALITREE PROPAGATORS'),
('LINNAEA NURSERIES LTD'),
('CI FARMS'),
('DESERT HORIZON NURSERY'),
('MEADOWLARK ORNAMENTALS LLC'),
('PHELPS NURSERY'),
('MEDFORD NURSERY INC'),
('JEFFEREYS GREENHOUSES'),
('STOKLEY NURSERY'),
('STEWARTS GREENHOUSE'),
('A & R Spada Farms'),
('HUIZENGA BRO GREENHOUSE INC'),
('HEIRLOOM ROSES'),
('SUNRISE GREENHOUSES'),
('ALPHA NURSERY'),
('BREEZY HILL NURSERY'),
('DAYNABROOK GREENHOUSES'),
('DGI'),
('EDGEWOOD GREENHOUSE'),
('RAZBUTON INC'),
('GOLD COAST FARMS LLC'),
('A&W ANNUALS'),
('MESQUITE VALLEY GROWERS'),
('CAAN FLORAL CO INC'),
('SUNLAND NURSERY'),
('HSU''S'),
('GREEN BARN INC'),
('HONEYMOON ACRES'),
('COUNTRYSIDE FLOWER SHOP NURSER'),
('ARNOLDS GREENHOUSES'),
('WALNUT GROVE NURSERY'),
('KATOS NURSERY'),
('BAYVIEW GREENHOUSES'),
('AMERIGO'),
('AVA NURSERY'),
('SLC STORE'),
('BELLE INVESTMENTS'),
('SUN NURSERIES'),
('D''ADDIO FAMILY NURSERY'),
('GEORGE''S PLANT FARM'),
('MR GREENJEANS FARM MARKET'),
('BOEKESTYN GREENHOUSES LTD'),
('FISHER FARMS'),
('PINE VIEW FARM'),
('GILSON FAMILY ENTERPRISE'),
('STARLING NURSERY'),
('A GARDEN CENTER'),
('MCCALLS NURSERIES INC'),
('MAHONEYS GROWING DIVISION'),
('CAPOGNA FLOWERS'),
('J FRANK GAUDET TREE NURSERY'),
('NORTHWEST PLANT COMPANY'),
('KATYDID GREENHOUSE'),
('SHANER AVENUE NURSERY'),
('BEAUTIFUL LAND PRODUCTS'),
('ALASKA GDN & PET SUPPLY RET'),
('UNITED CENTRAL ORCHIDS'),
('WAYFAIR LLC'),
('DAHLINGHAUS VENTURES LLC'),
('PAYNES NURSERIES & GREENHOUSE'),
('IMPERIAL''S GARDEN INC'),
('TONYS GARDEN CENTER'),
('CINDYS GREENHOUSE'),
('DETWEILER''S FLOWERS'),
('FERGUSON LANDSCAPE'),
('BAYSIDE GARDEN CENTER'),
('WATERTOWN FLORAL')
) x(cust)
)
,profile AS (
SELECT * FROM rlarp.osm WHERE shipgrp IN (select cust FROM newc ) AND oseas >= 2018
)
,checkc AS (
SELECT distinct shipgrp FROM profile
)
-- SELECT cust, sum(fb_qty) FROM newc LEFT OUTER JOIN profile ON shipgrp = cust GROUP by cust
----grouped prices-------------
,pgrp AS (
SELECT
o.bill_dba
,o.ship_dba
,o.part
,o.odate
,o.qtyord
,i.nwht * CASE WHEN i.nwun = 'KG' THEN 2.2 ELSE 1 END lbs
,i.mpck pltq
,ROUND(o.sales_usd / o.qty,5) price
,(o.pricing->>'guidance_price')::NUMERIC guidance
,(o.pricing->>'floor' )::numeric(15,5) floor
,(o.pricing->>'ceiling')::numeric(15,5) ceiling
,(o.pricing->>'uselimits')::boolean uselimits
FROM
rlarp.osm_stack o
LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
i.item = o.part
WHERE
VERSION = 'Actual'
AND oseas >= 2024
AND calc_status <> 'CANCELED'
AND o.fs_line = '41010'
AND o.part <> ''
AND substring(o.glec,1,1) <= '2'
AND o.qty <> 0
GROUP BY
o.bill_dba
,o.ship_dba
,o.part
,o.odate
,o.qtyord
,o.pounds
,o.pallets
,ROUND(o.sales_usd / o.qty,5)
,i.nwht * CASE WHEN i.nwun = 'KG' THEN 2.2 ELSE 1 END
,i.mpck
,(o.pricing->>'guidance_price')::NUMERIC
,(o.pricing->>'floor' )::numeric(15,5)
,(o.pricing->>'ceiling')::numeric(15,5)
,(o.pricing->>'uselimits')::boolean
)
----sequenced for most recent price------------
,seq AS (
SELECT
bill_dba
,ship_dba
,part
,odate
,qtyord
,lbs
,pltq
,price
,guidance
,floor
,ceiling
,uselimits
,row_number() OVER (PARTITION BY bill_dba, ship_dba, part ORDER BY odate desc) rn
,round(avg(price) over (PARTITION BY bill_dba, ship_dba, part),5) avgprice
FROM
pgrp
)
,grp AS (
SELECT
o.account
,o.shipgrp
,o.part
,o.oseas
,o.odate
,o.sseas
,o.sdate
-- ,o.calc_status
,ROUND(sum(fb_qty * lbs),5) lbs
,ROUND(sum(fb_qty),2) qty
,ROUND(sum(fb_val_loc * r_rate),2) sales_usd
,ROUND(sum(fb_cst_loc_cur * c_rate),2) cost_curstd_usd
FROM
profile o
-- WHERE
-- iter IN ('actuals','actuals_plug','copy')
GROUP BY
o.account
,o.shipgrp
,o.part
,o.oseas
,o.odate
,o.sseas
,o.sdate
-- ,o.calc_status
)
SELECT
grp.account
,grp.shipgrp
,grp.part
,grp.oseas
,grp.odate
,grp.sseas
,grp.sdate
,grp.lbs
,grp.qty
,grp.sales_usd
,grp.cost_curstd_usd
,sum(grp.lbs) OVER (PARTITION BY shipgrp, oseas) shiplbs
,seq.floor
,seq.ceiling
,seq.uselimits
,seq.price
,seq.avgprice
,seq.pltq
FROM
grp
LEFT OUTER JOIN seq ON
seq.ship_dba = grp.shipgrp
AND seq.bill_dba = grp.account
AND seq.part = grp.part
AND seq.rn = 1