raena_analytics_scripts/new_users/reseller_business_metrics_c...

164 lines
8.5 KiB
MySQL
Raw Permalink Normal View History

2024-06-24 12:26:08 +00:00
--------------------------Reseller Business metrics--------------------------
Drop table if exists public.om_app_installed_reseller_business_metrics_db
create table public.om_app_installed_reseller_business_metrics_db
as
select App_install_date_1 as App_install_date,profile_objectid,profile_phone,profile_email,User_id,tier,flag,r_f,R
from (
select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when App_install_date_1 >= app_install_date and App_install_date_1 < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag,
row_number() over (partition by User_id,date_trunc('month', App_install_date_1) - interval '0 month'
order by date_trunc('month', App_install_date_1) - interval '0 month') as R_f,
row_number() over (partition by User_id order by App_install_date_1) as R
from (
select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_install_date_1,
profile_objectid,profile_phone,profile_email,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id
--coalesce(profile_phone,profile_objectid) as User_id
from clevertap.app_installed
) a
left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1
) where R_f=1
--order table creation
Drop table if exists public.om_order_reseller_business_metrics_db
create table public.om_order_reseller_business_metrics_db
as
select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when created_at >= app_install_date and created_at < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag
from (
select a.*,b.shipping_to
from
(
select replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,cast(created_at as date) as created_at
,count(distinct id) as order_id,sum(payment_amount) as payment_amount
from raena_order_management.order
where payment_status='Paid' and cast(is_archived as varchar)='false'
group by 1,2
) a
left join
(
select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,
row_number() over (partition by replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') order by shipping_to) as R_asc
,shipping_to
from raena_order_management.order
where payment_status='Paid' and cast(is_archived as varchar)='false'
) b on a.mobile=b.mobile and b.R_asc=1
) a
left join om_New_Existing_flag b on a.mobile=b.profile_phone and b.r_flag=1
--app_uninstalled table creation
Drop table if exists public.om_app_uninstalled_reseller_business_metrics_db
create table public.om_app_uninstalled_reseller_business_metrics_db
as
select * from (
select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when app_uninstall_date >= app_install_date and app_uninstall_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag,
row_number() over (partition by User_id,date_trunc('month', App_uninstall_date) - interval '0 month'
order by date_trunc('month', App_uninstall_date) - interval '0 month') as R_f
from (
select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_uninstall_date,
profile_phone,profile_objectid as Uninstall_profile_objectid ,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id
from clevertap.app_uninstalled
) a
left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1
) where R_f=1
--app launched
Drop table if exists public.om_app_launched_reseller_business_metrics_db
create table public.om_app_launched_reseller_business_metrics_db
as
select * from (
select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when App_launch_date >= app_install_date and App_launch_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag,
row_number() over (partition by User_id,date_trunc('month', App_launch_date) - interval '0 month'
order by date_trunc('month', App_launch_date) - interval '0 month') as R_f,
row_number() over (partition by User_id order by App_launch_date) as R
from (
select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_launch_date,
profile_phone,profile_objectid as launch_profile_objectid ,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id
from clevertap.app_launched
) a
left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1
) where R_f=1
--view
Drop table if exists public.om_product_view_reseller_business_metrics_db
create table public.om_product_view_reseller_business_metrics_db
as
select * from (
select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when App_view_date >= app_install_date and App_view_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag,
row_number() over (partition by User_id,date_trunc('month', App_view_date) - interval '0 month'
order by date_trunc('month', App_view_date) - interval '0 month') as R_f
from(
select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_view_date,
profile_objectid as view_object_id,profile_phone,profile_email,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id
from clevertap.view_item vi
union
select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_view_date,
profile_objectid as view_object_id,profile_phone,profile_email,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id
from clevertap.view_cart vi
) a
left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1
) where R_f=1
--view conversion
Drop table if exists public.om_order_reseller_business_metrics_db_view_conversion
create table public.om_order_reseller_business_metrics_db_view_conversion
as
select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when created_at >= app_install_date and created_at < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag
from (
select a.*,b.shipping_to
from
(
select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,cast(created_at as date) as created_at
,ID as order_id, payment_amount
from raena_order_management.order
where payment_status='Paid' and cast(is_archived as varchar)='false'
) a
left join
(
select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,
row_number() over (partition by replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') order by shipping_to) as R_asc
,shipping_to
from raena_order_management.order
where payment_status='Paid' and cast(is_archived as varchar)='false'
) b on a.mobile=b.mobile and b.R_asc=1
) a
left join om_New_Existing_flag b on a.mobile=b.profile_phone and b.r_flag=1
--Sku order/--Unique sku
Drop table if exists public.om_sku_reseller_business_metrics_db
create table public.om_sku_reseller_business_metrics_db
as
select a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New'
when created_at >= app_install_date and created_at < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag
from (
select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,cast(oi.created_at as date) as created_at,
sku
from raena_order_management.order_item oi
inner join raena_order_management.order o on oi.order_id=o.id
where o.payment_status='Paid' and cast(o.is_archived as varchar)='false'
--and replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') !=' '
) a
left join om_New_Existing_flag b on a.mobile=b.profile_phone and b.r_flag=1
Drop table if exists public.OM_Post_disc_reseller_business_db
create table OM_Post_disc_reseller_business_db
as
select transaction_date,coalesce(b.tier,'Not Present') as tier,
case when b.profile_phone isnull then 'New'
when transaction_date >= app_install_date and transaction_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag,
sum(quantity) as quantity,sum(discounted_price) as discounted_price,sum(cogs) as cogs
from OM_GM_DB_Product_category a
left join om_New_Existing_flag b
on replace(a.reseller_mobile,'+','')=b.profile_phone
and b.R_flag=1
group by 1,2,3