622 lines
23 KiB
SQL
622 lines
23 KiB
SQL
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.revenue_leakage_new_stage1;
|
|
|
|
|
|
CREATE TABLE raena_analytics.revenue_leakage_new_stage1 AS
|
|
SELECT order_placed_by,
|
|
reseller_id,
|
|
customer_id,
|
|
sku,
|
|
payment_status,
|
|
created_at,
|
|
payment_amount,
|
|
payment_status_sort,
|
|
quantity
|
|
FROM
|
|
(SELECT *,
|
|
row_number() over (partition BY reseller_id,sku,payment_status,cast(created_at AS date)
|
|
ORDER BY created_at,payment_status_sort,payment_amount DESC) AS R
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
o.created_at,
|
|
oi.payment_price AS payment_amount,
|
|
CASE WHEN payment_status='Paid' THEN 1 WHEN payment_status='Expired' THEN 2 ELSE 3 END AS payment_status_sort,
|
|
oi.quantity
|
|
FROM RAENA_ORDER_MANAGEMENT.order o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status IN ('Expired',
|
|
'Failed')
|
|
AND o.status='Order_Placed'
|
|
AND cast(o.created_at AS date) >='2022-01-01') inn) m
|
|
WHERE R=1 ;
|
|
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.revenue_leakage_new_stage2;
|
|
|
|
|
|
CREATE TABLE raena_analytics.revenue_leakage_new_stage2 AS
|
|
SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
o.created_at,
|
|
oi.quantity,
|
|
oi.payment_price AS payment_amount
|
|
FROM
|
|
(SELECT id,
|
|
order_placed_by ,
|
|
reseller_id,
|
|
customer_id,
|
|
payment_status,
|
|
created_at
|
|
FROM RAENA_ORDER_MANAGEMENT.order
|
|
WHERE payment_status='Paid'
|
|
AND cast(created_at AS date) >='2022-01-01') o
|
|
INNER JOIN
|
|
(SELECT order_id,
|
|
sku,
|
|
quantity,
|
|
payment_price
|
|
FROM RAENA_ORDER_MANAGEMENT.order_item
|
|
WHERE cast(created_at AS date) >='2022-01-01') oi ON o.id=oi.order_id;
|
|
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.om_revenue_leakage_qty_match;
|
|
|
|
|
|
CREATE TABLE raena_analytics.om_revenue_leakage_qty_match AS
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_sku,
|
|
a_payment_status,
|
|
a_created_at,
|
|
(a_payment_amount) AS revenue_leakage,
|
|
a_order_placed_by || a_reseller_id || a_sku || a_payment_status || cast(a_created_at AS date) AS concat1
|
|
FROM
|
|
(SELECT a.order_placed_by AS a_order_placed_by,
|
|
a.reseller_id AS a_reseller_id,
|
|
a.customer_id AS a_customer_id,
|
|
a.sku AS a_sku,
|
|
a.payment_status AS a_payment_status,
|
|
a.created_at AS a_created_at,
|
|
a.quantity AS a_quantity,
|
|
a.payment_amount AS a_payment_amount,
|
|
b.order_placed_by AS b_order_placed_by,
|
|
b.reseller_id AS b_reseller_id,
|
|
b.customer_id AS b_customer_id,
|
|
b.sku AS b_sku,
|
|
b.payment_status AS b_payment_status,
|
|
b.created_at AS b_created_at,
|
|
b.quantity AS b_quantity,
|
|
b.payment_amount AS b_payment_amount
|
|
FROM raena_analytics.revenue_leakage_new_stage1 a
|
|
LEFT JOIN raena_analytics.revenue_leakage_new_stage2 b ON a.order_placed_by=b.order_placed_by
|
|
AND a.reseller_id=b.reseller_id
|
|
AND a.sku=b.sku
|
|
AND a.quantity=b.quantity
|
|
AND a.customer_id IS NULL
|
|
AND b.customer_id IS NULL
|
|
AND b.created_at BETWEEN a.created_at AND a.created_at + INTERVAL '24 HOURS'
|
|
WHERE a.customer_id IS NULL) c
|
|
WHERE b_reseller_id IS NULL
|
|
UNION
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_sku,
|
|
a_payment_status,
|
|
a_created_at,
|
|
(a_payment_amount) AS payment_amount,
|
|
a_order_placed_by || a_reseller_id || a_customer_id || a_sku || a_payment_status || cast(a_created_at AS date)
|
|
FROM
|
|
(SELECT a.order_placed_by AS a_order_placed_by,
|
|
a.reseller_id AS a_reseller_id,
|
|
a.customer_id AS a_customer_id,
|
|
a.sku AS a_sku,
|
|
a.payment_status AS a_payment_status,
|
|
a.created_at AS a_created_at,
|
|
a.quantity AS a_quantity,
|
|
a.payment_amount AS a_payment_amount,
|
|
b.order_placed_by AS b_order_placed_by,
|
|
b.reseller_id AS b_reseller_id,
|
|
b.customer_id AS b_customer_id,
|
|
b.sku AS b_sku,
|
|
b.payment_status AS b_payment_status,
|
|
b.created_at AS b_created_at,
|
|
b.quantity AS b_quantity,
|
|
b.payment_amount AS b_payment_amount
|
|
FROM raena_analytics.revenue_leakage_new_stage1 a
|
|
LEFT JOIN raena_analytics.revenue_leakage_new_stage2 b ON a.order_placed_by=b.order_placed_by
|
|
AND a.reseller_id=b.reseller_id
|
|
AND a.sku=b.sku
|
|
AND a.quantity=b.quantity
|
|
AND a.customer_id = b.customer_id
|
|
AND b.created_at BETWEEN a.created_at AND a.created_at + INTERVAL '24 HOURS'
|
|
WHERE a.customer_id IS NOT NULL) c
|
|
WHERE b_reseller_id IS NULL;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.revenue_leakage_new_stage3;
|
|
|
|
|
|
CREATE TABLE raena_analytics.revenue_leakage_new_stage3 AS
|
|
SELECT ist.order_placed_by,
|
|
ist.reseller_id,
|
|
ist.customer_id,
|
|
ist.sku,
|
|
ist.payment_status,
|
|
nxt.created_at,
|
|
ist.quantity,
|
|
ist.payment_price
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
cast(o.created_at AS date) AS created_at,
|
|
sum(oi.quantity) AS quantity,
|
|
sum(oi.payment_price) AS payment_price
|
|
FROM RAENA_ORDER_MANAGEMENT.order o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status='Paid'
|
|
AND cast(o.created_at AS date) >='2022-01-01'
|
|
AND customer_id IS NOT NULL
|
|
GROUP BY 1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6) ist
|
|
INNER JOIN
|
|
(SELECT order_placed_by,
|
|
reseller_id,
|
|
customer_id,
|
|
sku,
|
|
payment_status,
|
|
created_at
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
o.created_at,
|
|
row_number() over (partition BY o.order_placed_by,o.reseller_id,o.customer_id,sku,cast(o.created_at AS date)
|
|
ORDER BY o.created_at DESC) AS R
|
|
FROM RAENA_ORDER_MANAGEMENT.order o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status='Paid'
|
|
AND cast(o.created_at AS date) >='2022-01-01'
|
|
AND customer_id IS NOT NULL) a
|
|
WHERE a.R=1) nxt ON ist.order_placed_by=nxt.order_placed_by
|
|
AND ist.reseller_id=nxt.reseller_id
|
|
AND ist.customer_id=nxt.customer_id
|
|
AND ist.sku=nxt.sku
|
|
AND ist.created_at=cast(nxt.created_at AS date);
|
|
|
|
|
|
DROP TABLE IF EXISTS public.om_revenue_leakage_qty_not_match;
|
|
|
|
|
|
CREATE TABLE public.om_revenue_leakage_qty_not_match AS
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_sku,
|
|
a_payment_status,
|
|
a_created_at,
|
|
(a_payment_amount)-(b_payment_amount) AS revenue_leakage,
|
|
a_order_placed_by || a_reseller_id || a_sku || a_payment_status || cast(a_created_at AS date) AS concat2
|
|
FROM
|
|
(SELECT a.order_placed_by AS a_order_placed_by,
|
|
a.reseller_id AS a_reseller_id,
|
|
a.customer_id AS a_customer_id,
|
|
a.sku AS a_sku,
|
|
a.payment_status AS a_payment_status,
|
|
a.created_at AS a_created_at,
|
|
a.quantity AS a_quantity,
|
|
a.payment_amount AS a_payment_amount,
|
|
b.order_placed_by AS b_order_placed_by,
|
|
b.reseller_id AS b_reseller_id,
|
|
b.customer_id AS b_customer_id,
|
|
b.sku AS b_sku,
|
|
b.payment_status AS b_payment_status,
|
|
b.created_at AS b_created_at,
|
|
b.quantity AS b_quantity,
|
|
b.payment_price AS b_payment_amount
|
|
FROM raena_analytics.revenue_leakage_new_stage1 a
|
|
INNER JOIN raena_analytics.revenue_leakage_new_stage3 b ON a.order_placed_by=b.order_placed_by
|
|
AND a.reseller_id=b.reseller_id
|
|
AND a.sku=b.sku
|
|
AND b.quantity < a.quantity
|
|
AND a.payment_amount>b.payment_price
|
|
AND a.customer_id ISNULL
|
|
AND b.customer_id ISNULL
|
|
AND b.created_at BETWEEN a.created_at AND a.created_at + INTERVAL '24 HOURS') c
|
|
UNION
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_sku,
|
|
a_payment_status,
|
|
a_created_at,
|
|
(a_payment_amount)-(b_payment_amount) AS revenue_leakage,
|
|
a_order_placed_by || a_reseller_id || a_customer_id || a_sku || a_payment_status || cast(a_created_at AS date)
|
|
FROM
|
|
(SELECT a.order_placed_by AS a_order_placed_by,
|
|
a.reseller_id AS a_reseller_id,
|
|
a.customer_id AS a_customer_id,
|
|
a.sku AS a_sku,
|
|
a.payment_status AS a_payment_status,
|
|
a.created_at AS a_created_at,
|
|
a.quantity AS a_quantity,
|
|
a.payment_amount AS a_payment_amount,
|
|
b.order_placed_by AS b_order_placed_by,
|
|
b.reseller_id AS b_reseller_id,
|
|
b.customer_id AS b_customer_id,
|
|
b.sku AS b_sku,
|
|
b.payment_status AS b_payment_status,
|
|
b.created_at AS b_created_at,
|
|
b.quantity AS b_quantity,
|
|
b.payment_price AS b_payment_amount
|
|
FROM raena_analytics.revenue_leakage_new_stage1 a
|
|
INNER JOIN raena_analytics.revenue_leakage_new_stage3 b ON a.order_placed_by=b.order_placed_by
|
|
AND a.reseller_id=b.reseller_id
|
|
AND a.sku=b.sku
|
|
AND b.quantity < a.quantity
|
|
AND a.payment_amount>b.payment_price
|
|
AND a.customer_id = b.customer_id
|
|
AND b.created_at BETWEEN a.created_at AND a.created_at + INTERVAL '24 HOURS') c
|
|
ORDER BY 2,
|
|
4;
|
|
|
|
|
|
|
|
drop table if exists raena_analytics.revenue_leakage_new_stage4;
|
|
|
|
create table raena_analytics.revenue_leakage_new_stage4
|
|
as
|
|
SELECT order_placed_by,
|
|
reseller_id,
|
|
customer_id,
|
|
sku,
|
|
payment_status,
|
|
created_at,
|
|
payment_price,
|
|
payment_status_sort,
|
|
quantity
|
|
FROM
|
|
(SELECT *,
|
|
row_number() over (partition BY reseller_id,sku,payment_status,cast(created_at AS date)
|
|
ORDER BY created_at,payment_status_sort,payment_price DESC) AS R
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
o.created_at,
|
|
oi.payment_price,
|
|
CASE WHEN payment_status='Paid' THEN 1 WHEN payment_status='Expired' THEN 2 ELSE 3 END AS payment_status_sort,
|
|
oi.quantity
|
|
FROM RAENA_ORDER_MANAGEMENT.
|
|
ORDER o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status!='Paid'
|
|
AND payment_status!='Pending'
|
|
AND o.status='Order_Placed'
|
|
AND cast(o.created_at AS date) >= '2022-01-01') inn) m
|
|
WHERE R=1;
|
|
|
|
drop table if exists raena_analytics.revenue_leakage_new_stage5;
|
|
|
|
create table raena_analytics.revenue_leakage_new_stage5
|
|
as
|
|
SELECT ist.order_placed_by,
|
|
ist.reseller_id,
|
|
ist.customer_id,
|
|
ist.sku,
|
|
ist.payment_status,
|
|
nxt.created_at,
|
|
ist.quantity,
|
|
ist.payment_price
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
cast(o.created_at AS date) AS created_at,
|
|
sum(oi.quantity) AS quantity,
|
|
sum(oi.payment_price) AS payment_price
|
|
FROM RAENA_ORDER_MANAGEMENT.
|
|
ORDER o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status='Paid'
|
|
AND cast(o.created_at AS date) >= '2022-01-01'
|
|
AND customer_id ISNULL
|
|
GROUP BY 1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6) ist
|
|
INNER JOIN
|
|
(SELECT order_placed_by,
|
|
reseller_id,
|
|
customer_id,
|
|
sku,
|
|
payment_status,
|
|
created_at
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
o.created_at,
|
|
row_number() over (partition BY o.order_placed_by,o.reseller_id,o.customer_id,sku,cast(o.created_at AS date)
|
|
ORDER BY o.created_at DESC) AS R
|
|
FROM RAENA_ORDER_MANAGEMENT.
|
|
ORDER o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status='Paid'
|
|
AND cast(o.created_at AS date) >= '2022-01-01'
|
|
AND customer_id ISNULL) a
|
|
WHERE a.R=1) nxt ON ist.order_placed_by=nxt.order_placed_by
|
|
AND ist.reseller_id=nxt.reseller_id
|
|
AND ist.sku=nxt.sku
|
|
AND ist.created_at=cast(nxt.created_at AS date);
|
|
|
|
|
|
drop table raena_analytics.revenue_leakage_new_stage6;
|
|
|
|
create table raena_analytics.revenue_leakage_new_stage6
|
|
as
|
|
SELECT ist.order_placed_by,
|
|
ist.reseller_id,
|
|
ist.customer_id,
|
|
ist.sku,
|
|
ist.payment_status,
|
|
nxt.created_at,
|
|
ist.quantity,
|
|
ist.payment_price
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
cast(o.created_at AS date) AS created_at,
|
|
sum(oi.quantity) AS quantity,
|
|
sum(oi.payment_price) AS payment_price
|
|
FROM RAENA_ORDER_MANAGEMENT.
|
|
ORDER o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status='Paid'
|
|
AND cast(o.created_at AS date) >= '2022-01-01'
|
|
AND customer_id NOTNULL
|
|
GROUP BY 1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6) ist
|
|
INNER JOIN
|
|
(SELECT order_placed_by,
|
|
reseller_id,
|
|
customer_id,
|
|
sku,
|
|
payment_status,
|
|
created_at
|
|
FROM
|
|
(SELECT DISTINCT o.order_placed_by,
|
|
o.reseller_id,
|
|
o.customer_id,
|
|
sku,
|
|
payment_status,
|
|
o.created_at,
|
|
row_number() over (partition BY o.order_placed_by,o.reseller_id,o.customer_id,sku,cast(o.created_at AS date)
|
|
ORDER BY o.created_at DESC) AS R
|
|
FROM RAENA_ORDER_MANAGEMENT.
|
|
ORDER o
|
|
INNER JOIN RAENA_ORDER_MANAGEMENT.order_item oi ON o.id=oi.order_id
|
|
WHERE o.payment_status='Paid'
|
|
AND cast(o.created_at AS date) >= '2022-01-01'
|
|
AND customer_id NOTNULL) a
|
|
WHERE a.R=1) nxt ON ist.order_placed_by=nxt.order_placed_by
|
|
AND ist.reseller_id=nxt.reseller_id
|
|
AND ist.customer_id=nxt.customer_id
|
|
AND ist.sku=nxt.sku
|
|
AND ist.created_at=cast(nxt.created_at AS date);
|
|
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.OM_Revenue_leakage;
|
|
|
|
|
|
CREATE TABLE raena_analytics.OM_Revenue_leakage AS
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_payment_status,
|
|
a_created_at,
|
|
sum(revenue_leakage) AS revenue_leakage
|
|
FROM
|
|
(SELECT *
|
|
FROM
|
|
(SELECT qm.*,
|
|
qnm.concat2
|
|
FROM raena_analytics.om_revenue_leakage_qty_match qm
|
|
LEFT JOIN raena_analytics.om_revenue_leakage_qty_not_match qnm ON qm.concat1=qnm.concat2) n
|
|
WHERE concat2 ISNULL) s
|
|
GROUP BY 1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
UNION
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_payment_status,
|
|
a_created_at,
|
|
sum(a_payment_amount)-sum(b_payment_amount) AS revenue_leakage
|
|
FROM
|
|
(SELECT a.order_placed_by AS a_order_placed_by,
|
|
a.reseller_id AS a_reseller_id,
|
|
a.customer_id AS a_customer_id,
|
|
a.sku AS a_sku,
|
|
a.payment_status AS a_payment_status,
|
|
a.created_at AS a_created_at,
|
|
a.quantity AS a_quantity,
|
|
a.payment_price AS a_payment_amount,
|
|
b.order_placed_by AS b_order_placed_by,
|
|
b.reseller_id AS b_reseller_id,
|
|
b.customer_id AS b_customer_id,
|
|
b.sku AS b_sku,
|
|
b.payment_status AS b_payment_status,
|
|
b.created_at AS b_created_at,
|
|
b.quantity AS b_quantity,
|
|
b.payment_price AS b_payment_amount
|
|
from raena_analytics.revenue_leakage_new_stage4 a
|
|
INNER join raena_analytics.revenue_leakage_new_stage5 b ON a.order_placed_by=b.order_placed_by
|
|
AND a.reseller_id=b.reseller_id
|
|
AND a.sku=b.sku
|
|
AND b.quantity < a.quantity
|
|
AND a.payment_price>b.payment_price
|
|
AND a.customer_id ISNULL
|
|
AND b.customer_id ISNULL
|
|
AND b.created_at BETWEEN a.created_at AND a.created_at + INTERVAL '24 HOURS') c
|
|
GROUP BY 1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
UNION
|
|
SELECT DISTINCT a_order_placed_by,
|
|
a_reseller_id,
|
|
a_customer_id,
|
|
a_payment_status,
|
|
a_created_at,
|
|
sum(a_payment_amount)-sum(b_payment_amount) AS revenue_leakage
|
|
FROM
|
|
(SELECT a.order_placed_by AS a_order_placed_by,
|
|
a.reseller_id AS a_reseller_id,
|
|
a.customer_id AS a_customer_id,
|
|
a.sku AS a_sku,
|
|
a.payment_status AS a_payment_status,
|
|
a.created_at AS a_created_at,
|
|
a.quantity AS a_quantity,
|
|
a.payment_price AS a_payment_amount,
|
|
b.order_placed_by AS b_order_placed_by,
|
|
b.reseller_id AS b_reseller_id,
|
|
b.customer_id AS b_customer_id,
|
|
b.sku AS b_sku,
|
|
b.payment_status AS b_payment_status,
|
|
b.created_at AS b_created_at,
|
|
b.quantity AS b_quantity,
|
|
b.payment_price AS b_payment_amount
|
|
from raena_analytics.revenue_leakage_new_stage4 a
|
|
INNER JOIN raena_analytics.revenue_leakage_new_stage6 b ON a.order_placed_by=b.order_placed_by
|
|
AND a.reseller_id=b.reseller_id
|
|
AND a.sku=b.sku
|
|
AND b.quantity < a.quantity
|
|
AND a.payment_price>b.payment_price
|
|
AND a.customer_id = b.customer_id
|
|
AND b.created_at BETWEEN a.created_at AND a.created_at + INTERVAL '24 HOURS') c
|
|
GROUP BY 1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
ORDER BY 2,
|
|
4;
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.OM_Revenue_leakage_dump;
|
|
|
|
|
|
CREATE TABLE raena_analytics.OM_Revenue_leakage_dump AS
|
|
SELECT *
|
|
FROM raena_analytics.om_revenue_leakage_qty_match
|
|
UNION
|
|
SELECT *
|
|
FROM raena_analytics.om_revenue_leakage_qty_not_match;
|
|
|
|
DROP TABLE IF EXISTS raena_analytics.om_conversion_order_data_1;
|
|
|
|
|
|
CREATE TABLE raena_analytics.om_conversion_order_data_1 AS
|
|
SELECT DISTINCT cast(created_at + interval '7 Hours' AS date) AS created_date,
|
|
date_part('year',created_at + interval '7 Hours') AS order_year,
|
|
date_part('month',created_at + interval '7 Hours') AS order_month,
|
|
To_char(created_at + interval '7 Hours','month') Month_name,
|
|
a.reseller_id,
|
|
id AS order_id,
|
|
reseller_info::json->>'email' AS transacted_email,
|
|
replace(reseller_info::json->>'mobile','+','') AS transacted_mobile,
|
|
payment_amount,
|
|
shipping_to,
|
|
order_placed_by,
|
|
b.Monthly_Tier,
|
|
c.Max_Tier_of_any_month,
|
|
rank() over(partition BY a.reseller_id
|
|
ORDER BY date_part('year',created_at + interval '7 Hours'),date_part('month',created_at + interval '7 Hours')) AS R
|
|
FROM raena_order_management.ORDER a
|
|
LEFT JOIN
|
|
( SELECT DISTINCT reseller_id,
|
|
order_year,
|
|
order_month,
|
|
CASE
|
|
WHEN revenue<2000000 THEN '<2 mn'
|
|
WHEN revenue>=2000000
|
|
AND revenue<=10000000 THEN '2-10 mn'
|
|
WHEN revenue>10000000 THEN '10+ mn'
|
|
END AS Monthly_Tier
|
|
FROM
|
|
( SELECT date_part('year',created_at + interval '7 Hours') AS order_year,
|
|
date_part('month',created_at + interval '7 Hours') AS order_month,
|
|
reseller_id ,
|
|
sum(payment_amount) AS revenue
|
|
FROM raena_order_management.ORDER
|
|
WHERE payment_status='Paid'
|
|
AND cast(is_archived AS varchar)='false'
|
|
GROUP BY date_part('year',created_at + interval '7 Hours'),
|
|
date_part('month',created_at + interval '7 Hours'),
|
|
reseller_id ) AA
|
|
WHERE reseller_id is not NULL) b ON a.reseller_id=b.reseller_id
|
|
AND date_part('year',a.created_at + interval '7 Hours') =b.order_year
|
|
AND date_part('month',a.created_at + interval '7 Hours')=b.order_month
|
|
LEFT JOIN
|
|
( SELECT DISTINCT reseller_id,
|
|
CASE
|
|
WHEN revenue<2000000 THEN '<2 mn'
|
|
WHEN revenue>=2000000
|
|
AND revenue<=10000000 THEN '2-10 mn'
|
|
WHEN revenue>10000000 THEN '10+ mn'
|
|
END AS Max_Tier_of_any_month
|
|
FROM
|
|
( SELECT reseller_id,
|
|
max(payment_amount) AS revenue
|
|
FROM raena_order_management.ORDER
|
|
WHERE payment_status='Paid'
|
|
AND cast(is_archived AS varchar)='false'
|
|
GROUP BY reseller_id ) BB
|
|
WHERE reseller_id is not NULL) c ON a.reseller_id=c.reseller_id
|
|
WHERE payment_status='Paid'
|
|
AND cast(is_archived AS varchar)='false'
|
|
AND cast(is_campaign AS varchar)='false'
|
|
ORDER BY 1,
|
|
3;
|
|
|
|
|
|
|