SET @start_date = DATE_SUB(CURDATE(), INTERVAL 10 DAY); SET @end_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY); DROP TEMPORARY TABLE IF EXISTS tmp_junior_sales_managers; CREATE TEMPORARY TABLE tmp_junior_sales_managers (KEY (user_id, `date`)) SELECT umd.`date`, umd.user_id, IFNULL(u.name_eng, u.nickname) AS junior_sales_manager FROM rabota_db.npm_user_manager_by_date umd JOIN rabota_db.`user` u ON u.user_id = umd.manager_id WHERE umd.`type` = 'junior_sales_manager' AND umd.`date` BETWEEN DATE(@start_date) AND DATE(@end_date); DROP TEMPORARY TABLE IF EXISTS tmp_sales_managers; CREATE TEMPORARY TABLE tmp_sales_managers (KEY (user_id, `date`)) SELECT umd.`date`, umd.user_id, IFNULL(u.name_eng, u.nickname) AS sales_manager FROM rabota_db.npm_user_manager_by_date umd JOIN rabota_db.`user` u ON u.user_id = umd.manager_id WHERE umd.`type` = 'sales_manager' AND umd.`date` BETWEEN DATE(@start_date) AND DATE(@end_date); DROP TEMPORARY TABLE IF EXISTS tmp_account_managers; CREATE TEMPORARY TABLE tmp_account_managers (KEY (user_id, `date`)) SELECT umd.`date`, umd.user_id, IFNULL(u.name_eng, u.nickname) AS account_manager FROM rabota_db.npm_user_manager_by_date umd JOIN rabota_db.`user` u ON u.user_id = umd.manager_id WHERE umd.`type` = 'account_manager' AND umd.`date` BETWEEN DATE(@start_date) AND DATE(@end_date); DROP TEMPORARY TABLE IF EXISTS tmp_user_country; CREATE TEMPORARY TABLE tmp_user_country (KEY(`user_id`)) SELECT u.user_id, ccr.`country_short_name` AS user_country FROM rabota_db.`user` u LEFT JOIN tablo.`country_commercial_region` ccr ON u.`country` = ccr.`country_code`; DROP TEMPORARY TABLE IF EXISTS tmp_adserver_unfilled; CREATE TEMPORARY TABLE tmp_adserver_unfilled (KEY (`date`, sa_site_id, demand_id)) SELECT a.`date`, b.sa_site_id, a.network_id, SUM( a.ad_server_unfilled_impressions ) AS unfilled_impressions, ( CASE WHEN network_id = 45470634 THEN 64 WHEN network_id = 21779055067 THEN 85 END ) AS demand_id FROM tablo.gam_ad_server_data a JOIN rabota_db.site_area_design_24 b ON a.ad_unit_id = b.dfp_adunit_id WHERE a.`date` BETWEEN DATE(@start_date) AND DATE(@end_date) GROUP BY a.`date`, b.sa_site_id, a.network_id; DROP TEMPORARY TABLE IF EXISTS tmp_demand_stat; CREATE TEMPORARY TABLE tmp_demand_stat (KEY (`date`)) SELECT sc.`date`, sc.user_id, sc.site_id, IFNULL(s.url_domain, s.url) AS url, IFNULL(sm.sales_manager, 'None') AS sales_manager, IFNULL(am.account_manager, 'None') AS account_manager, IFNULL(jsm.junior_sales_manager, 'None') AS junior_sales_manager, sc.adv_net_id AS demand_id, SUM(sc.external_view_count) AS impressions, SUM(sc.external_first_view_count) AS first_impressions, SUM(sc.external_viewability_measured_impressions) AS viewability_measured, SUM(sc.external_viewability_viewed_impressions) AS viewability_viewed, SUM(sc.adv_expense_gbp) AS adv_expense_gbp, SUM(sc.partner_gain_gbp) AS partner_gain_gbp, SUM(sc.adv_expense_base) AS adv_expense_rub, SUM(sc.partner_gain_base) AS partner_gain_rub, SUM(sc.hit_count) AS clicks, SUM(sc.external_first_request_count) AS requests, unf.unfilled_impressions AS unfilled_impressions, uc.user_country FROM rabota_db.npm_site_area_stat_cache sc JOIN rabota_db.`site` s ON s.site_id = sc.site_id LEFT JOIN tmp_sales_managers sm ON sm.user_id = sc.user_id AND sm.`date` = sc.`date` LEFT JOIN tmp_account_managers am ON am.user_id = sc.user_id AND am.`date` = sc.`date` LEFT JOIN tmp_junior_sales_managers jsm ON jsm.user_id = sc.user_id AND jsm.date = sc.date LEFT JOIN tmp_user_country uc ON uc.user_id = sc.user_id LEFT JOIN tmp_adserver_unfilled unf ON sc.date = unf.date AND sc.site_id = unf.sa_site_id AND sc.adv_net_id = unf.demand_id WHERE sc.`date` BETWEEN DATE(@start_date) AND DATE(@end_date) GROUP BY sc.`date`, sc.site_id, sc.adv_net_id HAVING SUM(sc.adv_expense) > 0; DROP TEMPORARY TABLE IF EXISTS tmp_usd_rate; CREATE TEMPORARY TABLE tmp_usd_rate (KEY (`date`)) SELECT e.`date`, AVG(e.exrate) AS exrate FROM rabota_db.exchange_rate e WHERE e.`date` BETWEEN DATE(@start_date) AND DATE(@end_date) AND e.source_cur_id = 6 AND e.destination_cur_id = 2 GROUP BY e.`date`; DROP TEMPORARY TABLE IF EXISTS tmp_eur_rate; CREATE TEMPORARY TABLE tmp_eur_rate (KEY (`date`)) SELECT e.`date`, AVG(e.exrate) AS exrate FROM rabota_db.exchange_rate e WHERE e.`date` BETWEEN DATE(@start_date) AND DATE(@end_date) AND e.source_cur_id = 6 AND e.destination_cur_id = 4 GROUP BY e.`date`; DROP TEMPORARY TABLE IF EXISTS tmp_rub_rate; CREATE TEMPORARY TABLE tmp_rub_rate (KEY (`date`)) SELECT e.`date`, AVG(e.exrate) AS exrate FROM rabota_db.exchange_rate e WHERE e.`date` BETWEEN DATE(@start_date) AND DATE(@end_date) AND e.source_cur_id = 6 AND e.destination_cur_id = 1 GROUP BY e.`date`; DROP TEMPORARY TABLE IF EXISTS tmp_site_create_date; CREATE TEMPORARY TABLE tmp_site_create_date (KEY (site_id)) SELECT sc.site_id, MIN(sc.`date`) AS site_create_date FROM tablo.activation_dates sc GROUP BY sc.site_id; DROP TEMPORARY TABLE IF EXISTS tmp_user_create_date; CREATE TEMPORARY TABLE tmp_user_create_date (KEY (user_id)) SELECT sc.user_id, MIN(sc.`date`) AS user_create_date FROM tablo.activation_dates sc GROUP BY sc.user_id; #user_segment DROP TEMPORARY TABLE IF EXISTS bob_date_pub; CREATE TEMPORARY TABLE bob_date_pub SELECT `date`, IFNULL(u.`moved_to_user_id`,r.`publisher_id`) AS publisher_id, SUM(r.`adv_expense_gbp`) AS adv_expense_gbp FROM bi.book_of_business_report r JOIN rabota_db.`user` u ON (r.`publisher_id` = u.`user_id`) GROUP BY IFNULL(u.`moved_to_user_id`,r.`publisher_id`), `date` HAVING SUM(r.`adv_expense_gbp`)>1; #summary for each publisher, no date filtering DROP TEMPORARY TABLE IF EXISTS bob_pub_summary; CREATE TEMPORARY TABLE bob_pub_summary (KEY (publisher_id)) SELECT r.publisher_id, CASE WHEN AVG(`adv_expense_gbp`)>=0 AND AVG(`adv_expense_gbp`)<50 THEN '[1] <50' WHEN AVG(`adv_expense_gbp`)>=50 AND AVG(`adv_expense_gbp`)<500 THEN '[2] 50-500' WHEN AVG(`adv_expense_gbp`)>=500 AND AVG(`adv_expense_gbp`)<1000 THEN '[3] 500-1000' WHEN AVG(`adv_expense_gbp`)>=1000 AND AVG(`adv_expense_gbp`)<5000 THEN '[4] 1000-5000' WHEN AVG(`adv_expense_gbp`)>=5000 AND AVG(`adv_expense_gbp`)<10000 THEN '[5] 5000-10000' WHEN AVG(`adv_expense_gbp`)>=10000 THEN '[6] 10000+' ELSE 'error' END AS revenue_segment FROM bob_date_pub r JOIN rabota_db.`user` u ON (r.`publisher_id` = u.`user_id`) WHERE r.`adv_expense_gbp`>1 AND u.`billing_source`!='nobilling' AND r.`publisher_id`>0 GROUP BY r.`publisher_id`; #site_segment DROP TEMPORARY TABLE IF EXISTS bob_date_site; CREATE TEMPORARY TABLE bob_date_site SELECT `date`, site_id, IFNULL(u.`moved_to_user_id`,r.`publisher_id`) AS publisher_id, SUM(r.`adv_expense_gbp`) AS adv_expense_gbp FROM bi.book_of_business_report r JOIN rabota_db.`user` u ON (r.`publisher_id` = u.`user_id`) GROUP BY IFNULL(u.`moved_to_user_id`,r.`publisher_id`), `date`, site_id HAVING SUM(r.`adv_expense_gbp`)>1; #summary for each publisher, no date filtering DROP TEMPORARY TABLE IF EXISTS bob_site_summary; CREATE TEMPORARY TABLE bob_site_summary (KEY (site_id)) SELECT r.site_id, CASE WHEN AVG(`adv_expense_gbp`)>=0 AND AVG(`adv_expense_gbp`)<50 THEN '[1] <50' WHEN AVG(`adv_expense_gbp`)>=50 AND AVG(`adv_expense_gbp`)<500 THEN '[2] 50-500' WHEN AVG(`adv_expense_gbp`)>=500 AND AVG(`adv_expense_gbp`)<1000 THEN '[3] 500-1000' WHEN AVG(`adv_expense_gbp`)>=1000 AND AVG(`adv_expense_gbp`)<5000 THEN '[4] 1000-5000' WHEN AVG(`adv_expense_gbp`)>=5000 AND AVG(`adv_expense_gbp`)<10000 THEN '[5] 5000-10000' WHEN AVG(`adv_expense_gbp`)>=10000 THEN '[6] 10000+' ELSE 'error' END AS revenue_segment FROM bob_date_site r JOIN rabota_db.`user` u ON (r.`publisher_id` = u.`user_id`) WHERE r.`adv_expense_gbp`>1 AND u.`billing_source`!='nobilling' AND r.`publisher_id`>0 GROUP BY r.`site_id`; # list of dates for sites when adv_expense_gbp > 0.2 DROP TEMPORARY TABLE IF EXISTS site_date_expense_02; CREATE TEMPORARY TABLE site_date_expense_02 (KEY (site_id)) SELECT sc.`site_id`, sc.`date`, SUM(sc.`adv_expense_gbp`) AS adv_expense_gbp FROM rabota_db.`npm_site_area_stat_cache` sc WHERE sc.date BETWEEN DATE(@start_date) AND DATE(@end_date) GROUP BY sc.`site_id`, sc.`date` HAVING SUM(sc.`adv_expense_gbp`) > 0.2; #copy of site_date_expense_02 for Update DROP TEMPORARY TABLE IF EXISTS site_date_expense_02_b; CREATE TEMPORARY TABLE site_date_expense_02_b (KEY (site_id)) SELECT sc.`site_id`, sc.`date`, SUM(sc.`adv_expense_gbp`) AS adv_expense_gbp FROM rabota_db.`npm_site_area_stat_cache` sc WHERE sc.date BETWEEN DATE(@start_date) AND DATE(@end_date) GROUP BY sc.`site_id`, sc.`date` HAVING SUM(sc.`adv_expense_gbp`) > 0.2; # list of sites with last date when adv_expense_gbp > 1, excluding yesterday; in other words, deactivated sites # logic: if yesterday adv_expense_gbp is > 1, then site is active, otherwise it is deactivated DROP TEMPORARY TABLE IF EXISTS site_deactiv_1; CREATE TEMPORARY TABLE site_deactiv_1 (KEY (site_id)) SELECT sde02.site_id, MAX(sde02.date) AS site_deactivation_date FROM site_date_expense_02 sde02 WHERE sde02.adv_expense_gbp > 1 GROUP BY sde02.site_id HAVING MAX(sde02.date) < DATE_SUB(CURDATE(), INTERVAL 1 DAY); # list of sites with last date when adv_expense_gbp > 0.2, excluding yesterday; in other words, deactivated sites # logic: if yesterday adv_expense_gbp is > 0.2, then site is active, otherwise it is deactivated DROP TEMPORARY TABLE IF EXISTS site_deactiv_02; CREATE TEMPORARY TABLE site_deactiv_02 (KEY (site_id)) SELECT sde02.site_id, MAX(sde02.date) AS site_deactivation_date FROM site_date_expense_02 sde02 GROUP BY sde02.site_id HAVING MAX(sde02.date) < DATE_SUB(CURDATE(), INTERVAL 1 DAY); # list of dates for users when adv_expense_gbp > 1 DROP TEMPORARY TABLE IF EXISTS user_date_expense_1; CREATE TEMPORARY TABLE user_date_expense_1 (KEY (user_id)) SELECT sc.`user_id`, sc.`date`, SUM(sc.`adv_expense_gbp`) AS adv_expense_gbp FROM rabota_db.`npm_site_area_stat_cache` sc WHERE sc.date BETWEEN DATE(@start_date) AND DATE(@end_date) GROUP BY sc.`user_id`, sc.`date` HAVING SUM(sc.`adv_expense_gbp`) > 1; DROP TEMPORARY TABLE IF EXISTS user_date_expense_1_move; CREATE TEMPORARY TABLE user_date_expense_1_move (KEY (real_user)) SELECT ude1.`user_id`, ude1.`date`, ude1.`adv_expense_gbp`, IFNULL(u.moved_to_user_id, ude1.user_id) AS real_user FROM user_date_expense_1 ude1 JOIN rabota_db.`user` u ON ude1.user_id = u.user_id; # list of users with last date when adv_expense_gbp > 1, excluding yesterday; in other words, deactivated users # logic: if yesterday adv_expense_gbp is > 1, then user is active, otherwise it is deactivated DROP TEMPORARY TABLE IF EXISTS user_deactiv_1; CREATE TEMPORARY TABLE user_deactiv_1 (KEY (real_user)) SELECT ude1m.real_user, MAX(ude1m.date) AS user_deactivation_date FROM user_date_expense_1_move ude1m GROUP BY ude1m.real_user HAVING MAX(ude1m.date) < DATE_SUB(CURDATE(), INTERVAL 1 DAY); # current status for newly inserted sites # otherwise adv_expense_gbp < 1 will remain Null when they may already have deactivation dates DROP TEMPORARY TABLE IF EXISTS site_deactiv_current; CREATE TEMPORARY TABLE site_deactiv_current (KEY (site_id)) SELECT DISTINCT c.site_id, c.site_deactivation_date FROM tablo.commercial_regions_daily_revenue c; # current status for newly inserted users # otherwise adv_expense_gbp < 1 will remain Null when they may already have deactivation dates DROP TEMPORARY TABLE IF EXISTS user_deactiv_current; CREATE TEMPORARY TABLE user_deactiv_current (KEY (user_id)) SELECT DISTINCT c.user_id, c.user_deactivation_date FROM tablo.commercial_regions_daily_revenue c WHERE demand_id <> -1 ; # list of current account managers DROP TEMPORARY TABLE IF EXISTS curr_acc_manager; CREATE TEMPORARY TABLE curr_acc_manager (KEY (user_id)) SELECT umd.user_id, IFNULL(u.name_eng, u.nickname) AS account_manager FROM rabota_db.npm_user_manager_by_date umd JOIN rabota_db.`user` u ON u.user_id = umd.manager_id WHERE umd.`type` = 'account_manager' AND umd.`date` = DATE(@end_date); DELETE FROM tablo.commercial_regions_daily_revenue WHERE `date` BETWEEN DATE(@start_date) AND DATE(@end_date); INSERT INTO tablo.commercial_regions_daily_revenue ( `date`, user_id, site_id, url, sales_manager, account_manager, junior_sales_manager, demand_id, impressions, first_impressions, viewability_measured, viewability_viewed, adv_expense_gbp, partner_gain_gbp, adv_expense_rub, partner_gain_rub, adv_expense_usd, partner_gain_usd, adv_expense_eur, partner_gain_eur, clicks, requests, unfilled_impressions, user_country ) SELECT d.`date`, d.user_id, d.site_id, d.url, d.sales_manager, d.account_manager, d.junior_sales_manager, d.demand_id, d.impressions, d.first_impressions, d.viewability_measured, d.viewability_viewed, d.adv_expense_gbp, d.partner_gain_gbp, d.adv_expense_rub, d.partner_gain_rub, ROUND(d.adv_expense_gbp * u.exrate, 8), ROUND(d.partner_gain_gbp * u.exrate, 8), ROUND(d.adv_expense_gbp * e.exrate, 8), ROUND(d.partner_gain_gbp * e.exrate, 8), clicks, requests, unfilled_impressions, user_country FROM tmp_demand_stat d JOIN tmp_usd_rate u ON u.`date` = d.`date` JOIN tmp_eur_rate e ON e.`date` = d.`date`; # temporary solution; dioguinho.pt moved to dioguinho.com with old site_id, new site_id is useless, has some residual stats DELETE FROM tablo.commercial_regions_daily_revenue WHERE site_id = 221255; DROP TEMPORARY TABLE IF EXISTS tmp_reactivation_sites; CREATE TEMPORARY TABLE tmp_reactivation_sites (KEY(reactivation_date, site_id)) SELECT site_id, MAX(reactivation_date) AS reactivation_date FROM tablo.`reactivation_sites` GROUP BY site_id; #custom for akket.com UPDATE tablo.`commercial_regions_daily_revenue` SET site_create_date = '2022-03-18' WHERE site_id = 210511; UPDATE tablo.commercial_regions_daily_revenue c LEFT JOIN rabota_db.demand_source d ON d.cmf_system_id = c.demand_id SET c.demand_name = IFNULL(d.name, 'Unknown'); # determine top sites of users # for active users # temp tables are created here, because updated user deactivation date is used # last 30 days stats of active users by site DROP TEMPORARY TABLE IF EXISTS active_user_site_a; CREATE TEMPORARY TABLE active_user_site_a (KEY (user_id, url)) SELECT t.user_id, t.`url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp FROM tablo.commercial_regions_daily_revenue t WHERE t.user_deactivation_date IS NULL AND t.date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND DATE(@end_date) GROUP BY t.user_id, t.`url` HAVING SUM(t.`adv_expense_gbp`) > 0; # last 30 days stats of active users by site; copy of previous temp table, because temp tables cannot be used twice in one query DROP TEMPORARY TABLE IF EXISTS active_user_site_b; CREATE TEMPORARY TABLE active_user_site_b (KEY (user_id, url)) SELECT t.user_id, t.`url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp FROM tablo.commercial_regions_daily_revenue t WHERE t.user_deactivation_date IS NULL AND t.date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND DATE(@end_date) GROUP BY t.user_id, t.`url` HAVING SUM(t.`adv_expense_gbp`) > 0; # top sites of active users based on last 30 days DROP TEMPORARY TABLE IF EXISTS top_user_site_activ; CREATE TEMPORARY TABLE top_user_site_activ (KEY (user_id, url)) SELECT a.user_id, a.url FROM active_user_site_a a WHERE a.total_adv_expense_gbp = (SELECT MAX(total_adv_expense_gbp) FROM active_user_site_b b WHERE b.user_id = a.user_id); # for deactivated users # all time stats of deactivated users by site DROP TEMPORARY TABLE IF EXISTS bob_top_user_site_a; CREATE TEMPORARY TABLE bob_top_user_site_a (KEY (publisher_id, site_url)) SELECT t.publisher_id, t.`site_url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp FROM bi.`book_of_business_report` t GROUP BY t.publisher_id, t.`site_url` HAVING SUM(t.`adv_expense_gbp`) > 0; # all time stats of deactivated users by site; copy of previous temp table, because temp tables cannot be used twice in one query DROP TEMPORARY TABLE IF EXISTS bob_top_user_site_b; CREATE TEMPORARY TABLE bob_top_user_site_b (KEY (publisher_id, site_url)) SELECT t.publisher_id, t.`site_url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp FROM bi.`book_of_business_report` t GROUP BY t.publisher_id, t.`site_url` HAVING SUM(t.`adv_expense_gbp`) > 0; # top sites of deactivated users based on all time stats DROP TEMPORARY TABLE IF EXISTS top_user_site_deactiv; CREATE TEMPORARY TABLE top_user_site_deactiv (KEY (publisher_id, site_url)) SELECT a.publisher_id, a.site_url FROM bob_top_user_site_a a WHERE a.total_adv_expense_gbp = (SELECT MAX(total_adv_expense_gbp) FROM bob_top_user_site_b b WHERE b.publisher_id = a.publisher_id); DROP TEMPORARY TABLE IF EXISTS tmp_final_update; CREATE TEMPORARY TABLE tmp_final_update (KEY(site_id)) SELECT s.`site_id`, s.`user_id`, IFNULL(am.account_manager, 'None') AS account_manager_current, user_activ.user_create_date, u.`email` AS user_email, IFNULL(u.commercial_region, 'other') AS commercial_region, bob_pub.revenue_segment AS user_segment, bob_site.revenue_segment AS site_segment, site_activ.site_create_date, r.`reactivation_date` AS reactivation_month, CASE WHEN site_deac_curr.site_id IS NOT NULL THEN site_deac_curr.site_deactivation_date WHEN (bob_site.revenue_segment = '[1] <50' OR ((bob_site.revenue_segment != '[1] <50' OR bob_site.revenue_segment IS NULL) AND site_02_b.site_id IS NOT NULL)) THEN NULL WHEN (bob_site.revenue_segment != '[1] <50' OR bob_site.revenue_segment IS NULL) THEN sd1.site_deactivation_date WHEN (bob_site.revenue_segment = '[1] <50') THEN sd02.site_deactivation_date END AS site_deactivation_date, CASE WHEN user_deac_curr.user_id IS NOT NULL THEN user_deac_curr.user_deactivation_date WHEN ude1.real_user IS NOT NULL THEN NULL WHEN ud1.real_user IS NOT NULL THEN ud1.user_deactivation_date END AS user_deactivation_date, IF( CASE WHEN user_deac_curr.user_id IS NOT NULL THEN user_deac_curr.user_deactivation_date WHEN ude1.real_user IS NOT NULL THEN NULL WHEN ud1.real_user IS NOT NULL THEN ud1.user_deactivation_date END IS NOT NULL, u.`stopping_reason`, NULL) AS user_stop_reason, IF( CASE WHEN user_deac_curr.user_id IS NOT NULL THEN user_deac_curr.user_deactivation_date WHEN ude1.real_user IS NOT NULL THEN NULL WHEN ud1.real_user IS NOT NULL THEN ud1.user_deactivation_date END IS NULL, top_activ.url, top_deac.site_url) AS user_top_site FROM rabota_db.`site` s JOIN rabota_db.`user` u ON u.`user_id` = s.`user_id` LEFT JOIN bob_pub_summary bob_pub ON bob_pub.publisher_id = s.user_id LEFT JOIN tmp_user_create_date user_activ ON user_activ.user_id = s.user_id LEFT JOIN curr_acc_manager am ON am.user_id = s.user_id LEFT JOIN bob_site_summary bob_site ON bob_site.site_id = s.site_id LEFT JOIN tmp_site_create_date site_activ ON site_activ.site_id = s.site_id LEFT JOIN tmp_reactivation_sites r ON r.`site_id` = s.`site_id` LEFT JOIN (SELECT DISTINCT site_id FROM site_date_expense_02) site_02 ON site_02.site_id = s.`site_id` LEFT JOIN (SELECT DISTINCT site_id FROM site_date_expense_02_b WHERE adv_expense_gbp > 1) site_02_b ON site_02_b.site_id = s.`site_id` LEFT JOIN site_deactiv_1 sd1 ON sd1.site_id = s.site_id LEFT JOIN site_deactiv_02 sd02 ON sd02.site_id = s.site_id LEFT JOIN (SELECT DISTINCT real_user FROM user_date_expense_1_move) ude1 ON ude1.real_user = s.user_id LEFT JOIN user_deactiv_1 ud1 ON ud1.real_user = s.user_id LEFT JOIN top_user_site_activ top_activ ON top_activ.user_id = s.user_id LEFT JOIN top_user_site_deactiv top_deac ON top_deac.publisher_id = s.user_id LEFT JOIN site_deactiv_current site_deac_curr ON site_deac_curr.site_id = s.site_id LEFT JOIN user_deactiv_current user_deac_curr ON user_deac_curr.user_id = s.user_id ; UPDATE tablo.`commercial_regions_daily_revenue` c LEFT JOIN tmp_final_update tmp ON c.`site_id` = tmp.site_id SET c.`account_manager_current` = tmp.account_manager_current, c.user_create_date = tmp.user_create_date, c.`user_email` = tmp.user_email, c.commercial_region = tmp.commercial_region, c.user_segment = tmp.user_segment, c.site_segment = tmp.site_segment, c.`site_create_date` = tmp.site_create_date, c.reactivation_month = tmp.reactivation_month, c.site_deactivation_date = tmp.site_deactivation_date, c.user_deactivation_date = tmp.user_deactivation_date, c.user_stop_reason = tmp.user_stop_reason, c.user_top_site = tmp.user_top_site ; DELETE FROM tablo.commercial_regions_daily_revenue_no_ds WHERE `date` BETWEEN DATE(@start_date) AND DATE(@end_date); INSERT INTO tablo.commercial_regions_daily_revenue_no_ds ( `date`, user_id, site_id, url, sales_manager, account_manager, impressions, viewability_measured, viewability_viewed, adv_expense_gbp, partner_gain_gbp, adv_expense_rub, partner_gain_rub, adv_expense_usd, partner_gain_usd, adv_expense_eur, partner_gain_eur, unfilled_impressions ) SELECT c.`date`, c.user_id, c.site_id, c.url, c.sales_manager, c.account_manager, SUM(c.impressions), SUM(c.viewability_measured), SUM(c.viewability_viewed), SUM(c.adv_expense_gbp), SUM(c.partner_gain_gbp), SUM(c.adv_expense_rub), SUM(c.partner_gain_rub), SUM(c.adv_expense_usd), SUM(c.partner_gain_usd), SUM(c.adv_expense_eur), SUM(c.partner_gain_eur), SUM(c.unfilled_impressions) FROM tablo.commercial_regions_daily_revenue c WHERE c.`date` BETWEEN DATE(@start_date) AND DATE(@end_date) AND c.demand_id <> -1 GROUP BY c.`date`, c.site_id; UPDATE tablo.commercial_regions_daily_revenue_no_ds c LEFT JOIN rabota_db.`user` u ON u.user_id = c.user_id LEFT JOIN tmp_site_create_date s ON s.site_id = c.site_id SET c.commercial_region = IFNULL(u.commercial_region, 'other'), c.site_create_date = s.site_create_date; UPDATE tablo.commercial_regions_daily_revenue a LEFT JOIN rabota_db.site s ON s.site_id = a.site_id LEFT JOIN rabota_db.site_category c ON c.category_id = s.category_id SET a.site_category = IFNULL(c.name, 'Unknown') WHERE a.`date` BETWEEN @start_date AND @end_date; DROP TEMPORARY TABLE IF EXISTS pipedrive_data; CREATE TEMPORARY TABLE pipedrive_data (KEY(publisher_id)) SELECT po.organization_custom_clickio_user_id AS publisher_id, GROUP_CONCAT(poa.label) AS 'pd_org_lead_channel' FROM rabota_db.pipedrive_organization po JOIN rabota_db.pipedrive_organization_attrs poa ON po.organization_id = poa.organization_id AND poa.attr_name = 'lead_channel' WHERE po.organization_custom_clickio_user_id IS NOT NULL GROUP BY po.organization_id; UPDATE tablo.`commercial_regions_daily_revenue` r LEFT JOIN pipedrive_data pd ON pd.publisher_id = r.user_id SET r.lead_channel = pd.pd_org_lead_channel WHERE r.`date` BETWEEN @start_date AND @end_date; #user_bu_id,user_billing_country,user_payment_method UPDATE tablo.`commercial_regions_daily_revenue` r USE INDEX (DATE) JOIN bi.user u ON (r.user_id=u.user_id) SET r.user_bu_id=IF(u.user_subnet_id=19,13,IF(u.user_subnet_id=21,15,0)), r.user_billing_country = u.user_billing_country, r.user_payment_method=u.payment_method, r.user_tag=u.user_tag WHERE r.`date` BETWEEN @start_date AND @end_date; #demand_bu_id UPDATE tablo.`commercial_regions_daily_revenue` r USE INDEX (DATE) JOIN rabota_db.cmf_system cs ON (r.demand_id=cs.cmf_system_id) SET r.demand_bu_id=cs.business_unit_id WHERE r.`date` BETWEEN @start_date AND @end_date; #Jacopo asked to remove publisher deactivation date for these publishers temporarily UPDATE tablo.`commercial_regions_daily_revenue` SET user_deactivation_date = NULL WHERE user_id IN (145101, 146953); SELECT 1 AS STATUS, 'OK' AS message;