raena_analytics_scripts/revenue_leakage/revenue_leakage_code.sh

386 lines
22 KiB
Bash

#!/bin/bash
echo "
--------------------------Revenue Leakage --------------------------
drop table if exists public.om_revenue_leakage_qty_match;
create table public.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 (
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' --and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'AVS019%'
) inn
) m where R=1
) a
left join
(
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 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 o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'AVS019%'
) 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 isnull and b.customer_id isnull
and b.created_at between a.created_at and a.created_at + INTERVAL '24 HOURS'
where a.customer_id isnull
) c
where b_reseller_id isnull
--group by 1,2,3,4,5,6
union --cusotmer_id notnull cases
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 (
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' --and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'AVS019%'
) inn
) m where R=1
) a
left join
(
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 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 o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'AVS019%'
) 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 notnull
) c
where b_reseller_id isnull;
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_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 (
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 IN ('Expired','Failed') and o.status='Order_Placed' and cast(o.created_at as date) >='2022-01-01' ----and o.reseller_id='014b731e-e1f6-4d9e-b84e-8715194bc624' --and sku like 'AVS019%'
) inn
) m where R=1
) a
inner join
(
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 --and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'SF005%'
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 --and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'SF005%'
) 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)
) 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,6
union --customer-d notnull
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_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 (
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 IN ('Expired','Failed') and o.status='Order_Placed' and cast(o.created_at as date) >='2022-01-01'
--and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'SF005%'
) inn
) m where R=1
) a
inner join
(
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 --and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'SF005%'
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
--and o.reseller_id='f9a6fc9e-0b6c-4fe9-a314-090b50cf4367' --and sku like 'SF005%'
) 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)
) 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,6
order by 2,4;
drop table if exists OM_Revenue_leakage;
create table 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 public.om_revenue_leakage_qty_match qm
left join public.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
--qty not match
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 (
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' --and o.reseller_id='014b731e-e1f6-4d9e-b84e-8715194bc624' and sku like 'AVS019%'
) inn
) m where R=1
) a
inner join
(
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--and o.reseller_id='7b998baf-7091-41c6-b00f-2a1247ecd0f4' and sku like 'SF005%'
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--and o.reseller_id='7b998baf-7091-41c6-b00f-2a1247ecd0f4' and sku like 'SF005%'
) 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)
) 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 --customer-d notnull
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 (
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' --and o.reseller_id='7b998baf-7091-41c6-b00f-2a1247ecd0f4' and sku like 'SF005%'
) inn
) m where R=1
) a
inner join
(
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--and o.reseller_id='7b998baf-7091-41c6-b00f-2a1247ecd0f4' and sku like 'SF005%'
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--and o.reseller_id='7b998baf-7091-41c6-b00f-2a1247ecd0f4' and sku like 'SF005%'
) 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)
) 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 OM_Revenue_leakage_dump;
create table OM_Revenue_leakage_dump
as
select * from public.om_revenue_leakage_qty_match
union
select * from public.om_revenue_leakage_qty_not_match;
drop table if exists public.om_conversion_order_data_1;
create table public.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_date + interval '7 Hours','month') Month_name,
a.reseller_id,id as order_id,json_extract_path_text(reseller_info,'email',TRUE) as transacted_email,replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') 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
) where reseller_id notnull
) 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
) where reseller_id notnull
) 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;
" > /home/ec2-user/cronjob/revenue_leakage/revenue_leakage.sql
psql "host=raen-prd-sg-redshift-cluster.cdqj58hfx4p7.ap-southeast-1.redshift.amazonaws.com user=dbadmin dbname=analytics port=5439 password=5qCif6eyY3Kmg4z" -f/home/ec2-user/cronjob/revenue_leakage/revenue_leakage.sql