#!/bin/bash echo -e " \n----------- ACCEPTING NUMBER OF DAYS BEFORE THE RUN DATE FOR WHICH THE REPORT IS TO BE RUN --------------\n" backDay=$1 echo $backDay echo -e " \n------------- DATE IN THE REQUIRED FORMAT --------------\n" reportDate=$(date -d"$backDay day ago" "+%Y-%m-%d") date echo 'reportDate'=$reportDate echo " drop table if exists raena_analytics.clevertap_event_data_vishnu; create table raena_analytics.clevertap_event_data_vishnu as select ts::date ,events, name , email ,phone,event_props::jsonb->>'CT Session Id' sessionid , event_props::jsonb->>'item_id' item_id , event_props::jsonb->>'isGuestUser' isGuestUser , event_props::jsonb->>'CT Source' Source , event_props::jsonb->>'id' id , event_props::jsonb->>'brandName' brandName , event_props::jsonb->>'item_name' item_name , event_props::jsonb->>'offenderItems' offenderItems , event_props::jsonb->>'items' items , event_props::jsonb->>'search_term' search_term , event_props::jsonb->>'screen' screen from clevertap.clevertap_master_data where events in ( 'brands_tab_press' , 'brand_logo_carousel_press', 'App Launched', 'view_item', 'begin_checkout', 'search', 'Charged', 'App Installed', 'view_cart', 'add_to_cart', 'customer_search', 'Notification Clicked', 'Notification Viewed', 'Push Impressions', 'home_category', 'pdp_brandprice', 'order_items_view', 'sidebar_browsebrands', 'confirm_payment', 'finish_checkout', 'loyalty_page_visit', 'home_brand_Caraousel', 'home_brand_grid_view', 'WISHLIST', 'brand_carousel_press', 'continue_shopping', 'home_banner', 'brandpage_image_banner_press', 'skip_login', 'App Uninstalled', 'coupon_applied_successfully', 'coupon_could_not_be_applied', 'view_rewards', 'view_order_checkout', 'coupon_remove', 'homeintent_buyws', 'homepage_image_banner_press', 'home_continue_payment', 'homepage_carousel_category_press', 'flashsale_carousel_item_press', 'flashsale_carousel_view_all_press', 'homeintent_managemp' ) and ts::date >='2023-04-01'; drop table raena_analytics.hero_sku_l6m; CREATE TABLE raena_analytics.hero_sku_l6m AS SELECT DISTINCT brand_name , brand_id, SKU FROM (SELECT * , sum(contribution) over (partition BY brand_name ORDER BY rnk) final_rnk FROM (SELECT * , sum(payment_amount) over (partition BY brand_name) running_sum, (payment_amount*100)/nullif(sum(payment_amount) over (partition BY brand_name),0) contribution FROM (SELECT GD.brand_name , gd.sku , B.brand_id, sum(quantity* discounted_price) payment_amount , rank() over (partition BY brand_name ORDER BY sum(quantity* discounted_price) DESC) rnk FROM raena_analytics.gm_dashboard gd LEFT JOIN raena_catalog_management.product B ON gd.sku = B.sku WHERE transaction_date BETWEEN (date_trunc('Month',CURRENT_DATE)::date + interval'-6 Month')::date AND date_trunc('Month',CURRENT_DATE)::date GROUP BY 1, 2, 3) A) AA) BB WHERE (final_rnk <=75) OR contribution >= 75 ; drop table if exists raena_analytics.whatsapp_campaign_base_table ; CREATE TABLE raena_analytics.whatsapp_campaign_base_table AS SELECT DISTINCT brand_name , segment_name, reseller_email, reseller_mobile , reseller_name from (select *,row_number()over(partition by brand_name order by segment_number ) brand_limit_user FROM (SELECT * , rank()over(partition BY brand_name,reseller_email ORDER BY segment_number) remove_duplicate_user FROM (SELECT DISTINCT anchor_brand_name brand_name, 'SEGMENT_PERSONAL_ANCHOR_BRAND' segment_name, 1 segment_number, reseller_email, reseller_mobile, NULL reseller_name FROM (SELECT Transaction_date2 year_date, reseller_email, reseller_mobile, bucket revenue_cohort, Brand_name, avg_brand_contribution , avg_payment_amount avg_brand_revenue, anchor_brand_name, avg_anchor_brand_contribution, avg_anchor_payment_amount avg_anchor_brand_revenue FROM raena_analytics.reseller_level_anchor_brand_data WHERE 1=1 AND bucket IS NOT NULL ORDER BY year_date DESC , avg_anchor_brand_contribution DESC) A UNION ALL SELECT DISTINCT brand_name brand_name, 'SEGMENT_PARENT_BRAND_FOR_ANCHOR' segment_name, 2 segment_number, reseller_email, reseller_mobile, NULL reseller_namme FROM (SELECT Transaction_date2 year_date, reseller_email, reseller_mobile, bucket revenue_cohort, Brand_name, avg_brand_contribution , avg_payment_amount avg_brand_revenue, anchor_brand_name, avg_anchor_brand_contribution, avg_anchor_payment_amount avg_anchor_brand_revenue FROM raena_analytics.reseller_level_anchor_brand_data WHERE 1=1 AND bucket IS NOT NULL ORDER BY year_date DESC , avg_anchor_brand_contribution DESC) A UNION ALL SELECT DISTINCT brand_name brand_name, 'SEGMENT_PERSONALIZED_RECOMMENDATIONS' segment_name, 3 segment_number, reseller_email, reseller_mobile, name reseller_name FROM (SELECT reseller_email, reseller_mobile, u.name, dr.sku, b.name brand_name, score match_score, after_discount post_discount_gm, stock_type, pi.current_inventory_ready, pi.current_inventory_pre_order, p.name product_name FROM (SELECT * FROM raena_recommendation_engine.daily_recommendation ORDER BY reseller_email, score DESC) dr INNER JOIN ( SELECT * FROM raena_user_management.user WHERE status = 'active') u ON u.mobile = dr.reseller_mobile INNER JOIN ( SELECT id, sku, stock_type, name, brand_id FROM raena_catalog_management.product WHERE is_archived = 'false' AND is_delisted = 'false') p ON p.sku = dr.sku INNER JOIN ( SELECT product_id, sum(CASE WHEN stock_type = 'READY_SKU' THEN stock_limit - reserve_stock END) AS current_inventory_ready , sum(CASE WHEN stock_type = 'PRE_ORDER' THEN stock_limit - reserve_stock END) AS current_inventory_pre_order FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pi ON pi.product_id = p.id INNER JOIN ( SELECT * FROM raena_catalog_management.brand) b ON b.id = p.brand_id ORDER BY match_score DESC) A UNION ALL SELECT DISTINCT name brand_name, 'SEGMENT_PROVINCE_BASED_RECOMMENDATION' segment_name, 4 segment_number, reseller_email, reseller_mobile, name reseller_name FROM ( SELECT shipping_province , dr.sku , b.name , score , after_discount , stock_type, pi.current_inventory_ready, pi.current_inventory_pre_order, p.name product_name FROM (SELECT shipping_province, sku, score, after_discount FROM raena_recommendation_engine.daily_recommendation_new_user ORDER BY score DESC, rank) dr INNER JOIN (SELECT id, sku, stock_type, name, brand_id FROM raena_catalog_management.product WHERE is_archived = 'false' AND is_delisted = 'false') p ON p.sku = dr.sku INNER JOIN (SELECT product_id, sum(CASE WHEN stock_type = 'READY_SKU' THEN stock_limit - reserve_stock END) AS current_inventory_ready , sum(CASE WHEN stock_type = 'PRE_ORDER' THEN stock_limit - reserve_stock END) AS current_inventory_pre_order FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pi ON pi.product_id = p.id INNER JOIN (SELECT id, name FROM raena_catalog_management.brand) b ON b.id = p.brand_id ORDER BY Score DESC) A INNER JOIN (SELECT reseller_email, reseller_mobile, reseller_name , shipping_province, sku, brand_name FROM raena_analytics.gm_dashboard gd WHERE transaction_date::date >='2023-02-01' AND reseller_email IS NOT NULL)B ON lower(A.shipping_province) = lower(B.shipping_province) AND A.name = B.brand_name AND A.sku = B.sku UNION ALL SELECT DISTINCT AA.Brand_name brand_name, 'SEGMENT_REVENUE_COHORT_ANCHOR_BRAND' segment_name, 4 segment_number, reseller_email, reseller_mobile, reseller_name FROM (SELECT Transaction_date2 year_date, bucket revenue_cohort, Brand_name, avg_brand_contribution , avg_payment_amount avg_brand_revenue, anchor_brand_name, avg_anchor_brand_contribution, avg_anchor_payment_amount avg_anchor_brand_revenue FROM raena_analytics.anchor_brand_data ORDER BY year_date DESC, avg_anchor_brand_contribution DESC) AA INNER JOIN (SELECT brand_name , bucket, reseller_email, reseller_mobile , reseller_name FROM raena_analytics.gm_dashboard gd INNER JOIN (SELECT DISTINCT reseller_id , CASE WHEN max_payment_amount BETWEEN 0 AND 2000000 THEN '0 to 2M' WHEN max_payment_amount BETWEEN 2000000 AND 10000000 THEN '2M to 10M' WHEN max_payment_amount >10000000 THEN '>10M' END bucket FROM (SELECT reseller_id, max(payment_amount) max_payment_amount FROM (SELECT reseller_id , date_trunc('Month',transaction_date)::date , sum(discounted_price*quantity) payment_amount FROM raena_analytics.gm_dashboard gd2 GROUP BY 1, 2) A GROUP BY 1) B)C ON gd.reseller_id = C.reseller_id WHERE transaction_date::date BETWEEN '2023-05-01' AND '2023-07-31') BB ON AA.brand_name = BB.brand_name AND AA.revenue_cohort = BB.bucket UNION ALL SELECT DISTINCT brand_name, 'SEGMENT_PERSONALIZED_RECOMMENDATIONS_SIMILAR_USER' segment_name, 5 segment_number, reseller_email, reseller_mobile, name reseller_name FROM (SELECT reseller_email, mobile Reseller_mobile, bb.name, dr.sku, b.name brand_name, score match_score, after_discount post_discount_gm, stock_type, pi.current_inventory_ready, pipreorder.current_inventory_pre_order, p.name product_name FROM (SELECT * FROM raena_recommendation_engine.daily_similar_user_v2 ORDER BY reseller_email, score DESC) dr LEFT JOIN ( SELECT id, sku, stock_type, name, brand_id FROM raena_catalog_management.product WHERE is_archived = 'false' AND is_delisted = 'false') p ON p.sku = dr.sku LEFT JOIN (SELECT product_id, sum(stock_limit - reserve_stock) AS current_inventory_ready FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND stock_type = 'READY_SKU' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pi ON pi.product_id = p.id LEFT JOIN (SELECT product_id, sum(stock_limit - reserve_stock) AS current_inventory_pre_order, max(estimated_arrival_date) AS estimated_arrival_date FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND stock_type = 'PRE_ORDER' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pipreorder ON pipreorder.product_id = p.id INNER JOIN ( SELECT id, name FROM raena_catalog_management.brand) b ON b.id = p.brand_id INNER JOIN ( SELECT * FROM raena_user_management.user) bb ON bb.email = dr.reseller_email ORDER BY reseller_email, match_score DESC) AA UNION ALL SELECT DISTINCT brand_name, 'SEGMENT_PERSONALIZED_RECOMMENDATIONS_SHIPPING_PROVINCE' segment_name, 6 segment_number, reseller_email, reseller_mobile, name reseller_name FROM (SELECT dr.reseller_email, mobile Reseller_mobile, bb.name, Shipping_Province, dr.sku, b.name brand_name, score match_score, after_discount post_discount_gm, stock_type, pi.current_inventory_ready, pipreorder.current_inventory_pre_order, p.name product_name FROM (SELECT * FROM raena_recommendation_engine.daily_recommendation_shipping_province ORDER BY reseller_email, score DESC) dr LEFT JOIN (SELECT id, sku, stock_type, name, brand_id FROM raena_catalog_management.product WHERE is_archived = 'false' AND is_delisted = 'false') p ON p.sku = dr.sku LEFT JOIN (SELECT product_id, sum(stock_limit - reserve_stock) AS current_inventory_ready FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND stock_type = 'READY_SKU' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pi ON pi.product_id = p.id LEFT JOIN (SELECT product_id, sum(stock_limit - reserve_stock) AS current_inventory_pre_order, max(estimated_arrival_date) AS estimated_arrival_date FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND stock_type = 'PRE_ORDER' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pipreorder ON pipreorder.product_id = p.id INNER JOIN (SELECT id, name FROM raena_catalog_management.brand) b ON b.id = p.brand_id INNER JOIN (SELECT * FROM raena_user_management.user) bb ON bb.email = dr.reseller_email ORDER BY match_score DESC) AA UNION ALL SELECT DISTINCT brand_name, 'SEGMENT_PERSONALIZED_RECOMMENDATIONS_REVENUE' segment_name, 7 segment_number, reseller_email, reseller_mobile, name reseller_name FROM (SELECT dr.reseller_email, mobile Reseller_mobile, bb.name, dr.sku, b.name brand_name, score match_score, after_discount post_discount_gm, stock_type, pi.current_inventory_ready, pipreorder.current_inventory_pre_order, p.name product_name FROM ( SELECT * FROM raena_recommendation_engine.daily_recommendation_revenue ORDER BY reseller_email, score DESC) dr LEFT JOIN (SELECT id, sku, stock_type, name, brand_id FROM raena_catalog_management.product WHERE is_archived = 'false' AND is_delisted = 'false') p ON p.sku = dr.sku LEFT JOIN (SELECT product_id, sum(stock_limit - reserve_stock) AS current_inventory_ready FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND stock_type = 'READY_SKU' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pi ON pi.product_id = p.id LEFT JOIN (SELECT product_id, sum(stock_limit - reserve_stock) AS current_inventory_pre_order, max(estimated_arrival_date) AS estimated_arrival_date FROM raena_catalog_management.product_inventory WHERE is_archived = 'false' AND stock_type = 'PRE_ORDER' AND (stock_limit - reserve_stock) > 0 GROUP BY product_id) pipreorder ON pipreorder.product_id = p.id INNER JOIN ( SELECT id, name FROM raena_catalog_management.brand) b ON b.id = p.brand_id INNER JOIN ( SELECT * FROM raena_user_management.user) bb ON bb.email = dr.reseller_email ORDER BY match_score DESC) A) AA) BB WHERE remove_duplicate_user =1) CC where brand_limit_user <=2000; update raena_analytics.whatsapp_campaign_base_table set reseller_name = name from raena_user_management.user where reseller_email = email ; update raena_analytics.whatsapp_campaign_base_table set reseller_name = name from raena_user_management.user where reseller_mobile = mobile and reseller_name is null ; update raena_analytics.whatsapp_campaign_base_table set reseller_email = email from raena_user_management.user where reseller_mobile = mobile and reseller_email is null ; " > /home/ec2-user/cronjob/postgresql/am_recommendation/whatsapp_campaign.sql psql "host=analytics-db-instance-1.cd7qipz3esdx.ap-southeast-1.rds.amazonaws.com user=dbadmin dbname=analytics port=5432 password=5qCif6eyY3Kmg4z" -f /home/ec2-user/cronjob/postgresql/am_recommendation/whatsapp_campaign.sql