Files
retail_model/retail_model/fw_ods_monthly_v2.sql
2021-12-20 16:17:48 +05:30

128 lines
3.6 KiB
SQL

DROP TABLE IF EXISTS public.fw_ods_monthly;
CREATE TABLE public.fw_ods_monthly (
syspk serial NOT NULL unique,
client_id int ,
function_id text ,
d1l1_syspk int ,
d1l1_id int ,
d1l1_name text ,
d1l2_syspk int ,
d1l2_id int ,
d1l2_name text ,
d1l3_syspk int ,
d1l3_id int ,
d1l3_name text ,
d1l4_syspk int ,
d1l4_id int ,
d1l4_name text ,
d2l1_syspk int ,
d2l1_id int ,
d2l1_name text ,
d2l2_syspk int ,
d2l2_id int ,
d2l2_name text ,
d2l3_syspk int ,
d2l3_id int ,
d2l3_name text ,
d3l1_syspk int ,
d3l1_id int ,
d3l1_name text ,
d4l1_date timestamp ,
d4l1_yyyy int ,
d4l1_qq int ,
d4l1_mm int ,
d4l1_ww int ,
d4l1_dd int ,
d5l1_syspk int ,
d5l1_id int ,
d5l1_name text ,
d5l2_syspk int ,
d5l2_id int ,
d5l2_name text ,
d5l3_syspk int ,
d5l3_name text ,
d6l1_id int ,
d6l1_name text ,
m1001 int ,
m1002 int ,
m1003 int ,
m1004 int ,
m1005 int ,
created_by text ,
updated_by text ,
create_time timestamp DEFAULT CURRENT_TIMESTAMP ,
update_time timestamp
);
insert into fw_ods_monthly(client_id, d1l1_name, d1l2_name, d1l3_name, d1l4_id, d2l1_name, d4l1_yyyy, d4l1_qq, d4l1_mm, d5l1_id, d5l1_name, m1001, m1002, m1003, m1004)
select
10 as client_id,
c.product_category as d1l1_name,
c.product_family as d1l2_name,
c.product_type as d1l3_name,
c.id as d1l4_id,
d.country as d2l1_name,
date_part('year'::text,b.txn_time) as d4l1_yyyy,
date_part('quarter'::text,b.txn_time) as d4l1_qq,
date_part('month'::text,b.txn_time) as d4l1_mm,
b.retailer_id as d5l1_id,
d.name as d5l1_name,
count(distinct b.txn_id) as m1001,
sum(a.quantity) as m1002,
sum(a.price) as m1003,
sum(c.cost_price) as m1004
FROM customer_salesorder a
JOIN customer_sales b ON a.salesorder_id = b.salesorder_id
JOIN products c ON a.product_id = c.id
JOIN retailers d ON b.retailer_id = d.id
GROUP by client_id, d1l1_name, d1l2_name, d1l3_name, d1l4_id, d2l1_name, d5l1_id, d5l1_name, d4l1_yyyy, d4l1_qq, d4l1_mm;
update public.fw_ods_monthly a
set d3l1_name = b.salesman
from public.tmp_salesman b
where trim(a.d2l1_name) = trim(b.d2)
and trim(a.d5l1_name) = trim(b.d5)
and a.d4l1_qq = b.d4l2;
update public.fw_ods_monthly a
set d1l4_name = c.prod_name
from public.product_id_map b, product_summary c
where d1l4_id = b.id
and b.prod_id = c.prod_id;
update public.fw_ods_monthly
set d5l2_name = 'Wholesale Retailer'
where d5l1_name in ('METRO');
update public.fw_ods_monthly
set d5l2_name = 'Small Scale Retailer'
where d5l1_name in ('Aeon');
update public.fw_ods_monthly
set d5l2_name = 'Enterprises'
where d5l1_name in ('Tesco');
update public.fw_ods_monthly
set d5l2_name = 'Refurbished Dealer'
where d5l1_name in ('Auchan');
update public.fw_ods_monthly
set d5l2_name = 'Refurbished Retailer'
where d5l1_name in ('Kroger');
update public.fw_ods_monthly
set d5l2_name = 'Digital Outlet'
where d5l1_name in ('Walmart');
update public.fw_ods_monthly
set d5l2_name = 'Wholesale Dealer'
where d5l1_name in ('Walgreen');
update public.fw_ods_monthly
set d5l2_name = 'Retail Outlet'
where d5l1_name in ('Aldi');