Luxup

запрос для старых\новых блоков

Oct 18th, 2023
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.65 KB | None | 0 0
  1. SET @start_date = DATE_SUB(CURDATE(), INTERVAL 10 DAY);
  2. SET @end_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
  3.  
  4. DROP TEMPORARY TABLE IF EXISTS
  5. tmp_current_junior_sales_managers;
  6.  
  7. CREATE TEMPORARY TABLE
  8. tmp_current_junior_sales_managers
  9. (KEY (user_id, `date`))
  10. SELECT
  11. umd.`date`,
  12. umd.user_id,
  13. IFNULL(u.name_eng, u.nickname) AS junior_sales_manager
  14. FROM
  15. rabota_db.npm_user_manager_by_date umd
  16. JOIN rabota_db.`user` u
  17. ON u.user_id = umd.manager_id
  18. WHERE
  19. umd.`type` = 'junior_sales_manager'
  20. AND umd.`date` = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
  21.  
  22. DROP TEMPORARY TABLE IF EXISTS
  23. tmp_current_sales_managers;
  24.  
  25. CREATE TEMPORARY TABLE
  26. tmp_current_sales_managers
  27. (KEY (user_id))
  28. SELECT
  29. umd.user_id,
  30. IFNULL(u.name_eng, u.nickname) AS sales_manager
  31. FROM
  32. rabota_db.npm_user_manager_by_date umd
  33. JOIN rabota_db.`user` u
  34. ON u.user_id = umd.manager_id
  35. WHERE
  36. umd.`type` = 'sales_manager'
  37. AND umd.`date` = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
  38.  
  39. DROP TEMPORARY TABLE IF EXISTS
  40. tmp_current_account_managers;
  41.  
  42. CREATE TEMPORARY TABLE
  43. tmp_current_account_managers
  44. (KEY (user_id))
  45. SELECT
  46. umd.user_id,
  47. IFNULL(u.name_eng, u.nickname) AS account_manager
  48. FROM
  49. rabota_db.npm_user_manager_by_date umd
  50. JOIN rabota_db.`user` u
  51. ON u.user_id = umd.manager_id
  52. WHERE
  53. umd.`type` = 'account_manager'
  54. AND umd.`date` = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
  55.  
  56. DROP TEMPORARY TABLE IF EXISTS
  57. tmp_site_start_date;
  58.  
  59. CREATE TEMPORARY TABLE
  60. tmp_site_start_date
  61. (KEY (site_id))
  62. SELECT
  63. sc.site_id,
  64. MIN(sc.`date`) AS site_start_date
  65. FROM
  66. tablo.activation_dates sc
  67. GROUP BY
  68. sc.site_id;
  69.  
  70. DROP TEMPORARY TABLE IF EXISTS
  71. tmp_area_start_date;
  72.  
  73. CREATE TEMPORARY TABLE
  74. tmp_area_start_date
  75. (KEY (area_id))
  76. SELECT
  77. IFNULL(asa.site_area_id, sc.site_area_id) AS area_id,
  78. MIN(sc.`date`) AS area_start_date
  79. FROM
  80. tablo.activation_dates sc
  81. LEFT JOIN rabota_db.attached_site_areas asa
  82. ON asa.attached_site_area_id = sc.site_area_id
  83. GROUP BY
  84. IFNULL(asa.site_area_id, sc.site_area_id);
  85.  
  86. DROP TEMPORARY TABLE IF EXISTS
  87. tmp_pixel_stat;
  88.  
  89. CREATE TEMPORARY TABLE
  90. tmp_pixel_stat
  91. (KEY (area_id, `date`))
  92. SELECT
  93. dcs.`date`,
  94. dcs.site_area_id AS area_id,
  95. SUM(dcs.`count`) AS area_requests
  96. FROM
  97. rabota_db.dfp_chain_stat dcs
  98. WHERE
  99. dcs.`date` BETWEEN DATE(@start_date) AND DATE(@end_date)
  100. AND dcs.step = 0
  101. GROUP BY
  102. dcs.`date`,
  103. dcs.site_area_id;
  104.  
  105. DROP TEMPORARY TABLE IF EXISTS
  106. tmp_usd_rate;
  107.  
  108. CREATE TEMPORARY TABLE
  109. tmp_usd_rate
  110. (KEY (`date`))
  111. SELECT
  112. e.`date`,
  113. AVG(e.exrate) AS exrate
  114. FROM
  115. rabota_db.exchange_rate e
  116. WHERE
  117. e.`date` BETWEEN DATE(@start_date) AND DATE(@end_date)
  118. AND e.source_cur_id = 6
  119. AND e.destination_cur_id = 2
  120. GROUP BY
  121. e.`date`;
  122.  
  123. DROP TEMPORARY TABLE IF EXISTS
  124. tmp_eur_rate;
  125.  
  126. CREATE TEMPORARY TABLE
  127. tmp_eur_rate
  128. (KEY (`date`))
  129. SELECT
  130. e.`date`,
  131. AVG(e.exrate) AS exrate
  132. FROM
  133. rabota_db.exchange_rate e
  134. WHERE
  135. e.`date` BETWEEN DATE(@start_date) AND DATE(@end_date)
  136. AND e.source_cur_id = 6
  137. AND e.destination_cur_id = 4
  138. GROUP BY
  139. e.`date`;
  140.  
  141. DROP TEMPORARY TABLE IF EXISTS tmp_unfilled_impressions;
  142. CREATE TEMPORARY TABLE tmp_unfilled_impressions (KEY(`date`, base_area_id))
  143. SELECT
  144. a.`date`,
  145. IFNULL(asa.site_area_id, b.`site_area_id`) AS base_area_id,
  146. SUM(a.ad_server_unfilled_impressions) AS unfilled_impressions
  147. FROM tablo.gam_ad_server_data a
  148. JOIN rabota_db.site_area_design_24 b ON a.ad_unit_id = b.dfp_adunit_id
  149. LEFT JOIN rabota_db.`attached_site_areas` asa ON asa.attached_site_area_id = b.site_area_id
  150. WHERE a.`date` BETWEEN DATE(@start_date) AND DATE(@end_date)
  151. GROUP BY
  152. a.`date`,
  153. base_area_id;
  154.  
  155. DROP TEMPORARY TABLE IF EXISTS tmp_site_area_events;
  156. CREATE TEMPORARY TABLE tmp_site_area_events (KEY(`date`, base_area_id))
  157. SELECT
  158. `date`,
  159. IFNULL(asa.`site_area_id`, sae.`site_area_id`) AS base_area_id,
  160. SUM(IF(`event` = 'stb_impv', `count`, 0)) AS stb_impv,
  161. SUM(IF(`event` = 'stb_clck', `count`, 0)) AS stb_clck,
  162. SUM(IF(`event` = 'slot_cnfrm_clck', `count`, 0)) AS slot_cnfrm_clck,
  163. SUM(IF(`event` = 'slot_cnfrm_clck_adm_bckp', `count`, 0)) AS slot_cnfrm_clck_adm_bckp
  164. FROM rabota_db.site_area_events sae
  165. JOIN rabota_db.`attached_site_areas` asa ON asa.`attached_site_area_id` = sae.`site_area_id`
  166. WHERE `date` BETWEEN @start_date AND @end_date
  167. GROUP BY
  168. `date`,
  169. base_area_id;
  170.  
  171. DROP TEMPORARY TABLE IF EXISTS tmp_user_country;
  172. CREATE TEMPORARY TABLE tmp_user_country (KEY(`user_id`))
  173. SELECT u.user_id, ccr.`country_short_name` AS user_country
  174. FROM rabota_db.`user` u
  175. LEFT JOIN tablo.`country_commercial_region` ccr
  176. ON u.`country` = ccr.`country_code`;
  177.  
  178. # For average viewable time (= viewable time / viewable_impressions)
  179. # Temp table for summing data from attached site areas to the base site area
  180. # Joining it with clickio base site area id
  181. DROP TEMPORARY TABLE IF EXISTS tmp_base_ad_unit_viewable_time;
  182. CREATE TEMPORARY TABLE tmp_base_ad_unit_viewable_time (KEY(`date`, site_area_id))
  183. SELECT a.date, IFNULL(b.site_area_id, c.`site_area_id`) AS site_area_id,
  184. SUM(a.average_viewable_time*a.viewable_impressions) AS viewable_time,
  185. SUM(viewable_impressions) AS viewable_impressions
  186. FROM tablo.ad_unit_viewable_time a
  187. JOIN rabota_db.site_area_design_24 c
  188. ON a.ad_unit_id = c.dfp_adunit_id
  189. LEFT JOIN attached_site_areas b
  190. ON c.`site_area_id` = b.`attached_site_area_id`
  191. WHERE a.date BETWEEN DATE(@start_date) AND DATE(@end_date)
  192. GROUP BY a.date, IFNULL(b.site_area_id, c.`site_area_id`);
  193.  
  194. DELETE FROM
  195. tablo.ad_unit_stat
  196. WHERE
  197. `date` BETWEEN DATE(@start_date) AND DATE(@end_date);
  198.  
  199. INSERT INTO
  200. tablo.ad_unit_stat
  201. (
  202. `date`,
  203. user_id,
  204. site_id,
  205. url,
  206. area_id,
  207. requests,
  208. impressions,
  209. clicks,
  210. viewability_measured,
  211. viewability_viewed,
  212. adv_expense,
  213. partner_gain,
  214. has_adx,
  215. partner_gain_pub,
  216. external_view_count,
  217. adv_expense_rub,
  218. partner_gain_rub,
  219. adv_expense_usd,
  220. partner_gain_usd,
  221. adv_expense_eur,
  222. partner_gain_eur,
  223. unfilled_impressions,
  224. area_requests,
  225. viewable_impressions,
  226. viewable_time,
  227. stb_impv,
  228. stb_clck,
  229. slot_cnfrm_clck,
  230. slot_cnfrm_clck_adm_bckp,
  231. user_email,
  232. user_country,
  233. pub_adserver_cost,
  234. pub_adserver_cost_gbp,
  235. company_adserver_cost,
  236. company_adserver_cost_gbp
  237. )
  238. SELECT
  239. sc.`date`,
  240. s.user_id,
  241. s.site_id,
  242. IFNULL(s.url_domain, s.url) AS url,
  243. IFNULL(asa.site_area_id, sc.site_area_id) AS base_area_id,
  244. SUM(sc.external_first_request_count) AS requests,
  245. SUM(sc.external_first_view_count) AS impressions,
  246. SUM(sc.hit_count) AS clicks,
  247. SUM(sc.external_viewability_measured_impressions) AS viewability_measured,
  248. SUM(sc.external_viewability_viewed_impressions) AS viewability_viewed,
  249. SUM(sc.adv_expense_gbp) AS adv_expense,
  250. SUM(sc.partner_gain_gbp) AS partner_gain,
  251. IF(SUM(IF(sc.adv_net_id IN (21, 64, 85, 86), 1, 0)) > 0, 1, 0) AS has_adx,
  252. SUM(sc.partner_gain) AS partner_gain_pub,
  253. SUM(sc.external_view_count),
  254. SUM(sc.adv_expense_base),
  255. SUM(sc.partner_gain_base),
  256. ROUND(SUM(sc.adv_expense_gbp * u.exrate), 8),
  257. ROUND(SUM(sc.partner_gain_gbp * u.exrate), 8),
  258. ROUND(SUM(sc.adv_expense_gbp * e.exrate), 8),
  259. ROUND(SUM(sc.partner_gain_gbp * e.exrate), 8),
  260. tmp.unfilled_impressions,
  261. IFNULL(ps.area_requests, 0),
  262. tmp_v.viewable_impressions,
  263. tmp_v.viewable_time,
  264. tmpsae.stb_impv,
  265. tmpsae.stb_clck,
  266. tmpsae.slot_cnfrm_clck,
  267. tmpsae.slot_cnfrm_clck_adm_bckp,
  268. us.email,
  269. tuc.user_country,
  270. SUM(sc.`pub_adserver_cost`) AS pub_adserver_cost,
  271. SUM(sc.`pub_adserver_cost_gbp`) AS pub_adserver_cost_gbp,
  272. SUM(sc.`company_adserver_cost`) AS company_adserver_cost,
  273. SUM(sc.`company_adserver_cost_gbp`) AS company_adserver_cost_gbp
  274. FROM
  275. rabota_db.npm_site_area_stat_cache sc
  276. LEFT JOIN rabota_db.attached_site_areas asa
  277. ON asa.attached_site_area_id = sc.site_area_id
  278. JOIN rabota_db.site_area sa
  279. ON sa.site_area_id = IFNULL(asa.site_area_id, sc.site_area_id)
  280. JOIN rabota_db.site s
  281. ON s.site_id = sa.parent_id
  282. JOIN rabota_db.user us
  283. ON us.user_id = s.user_id
  284. JOIN tmp_usd_rate u
  285. ON u.`date` = sc.`date`
  286. JOIN tmp_eur_rate e
  287. ON e.`date` = sc.`date`
  288. LEFT JOIN tmp_unfilled_impressions tmp
  289. ON sc.date = tmp.date AND IFNULL(asa.site_area_id, sc.site_area_id) = tmp.base_area_id
  290. LEFT JOIN tmp_site_area_events tmpsae
  291. ON sc.date = tmpsae.date AND IFNULL(asa.site_area_id, sc.site_area_id) = tmpsae.base_area_id
  292. LEFT JOIN tmp_user_country tuc
  293. ON tuc.user_id = s.user_id
  294. LEFT JOIN tmp_pixel_stat ps
  295. ON ps.area_id = IFNULL(asa.site_area_id, sc.site_area_id) AND ps.`date` = sc.date
  296. LEFT JOIN tmp_base_ad_unit_viewable_time tmp_v
  297. ON tmp_v.site_area_id = IFNULL(asa.site_area_id, sc.site_area_id) AND tmp_v.date = sc.date
  298. WHERE
  299. sc.`date` BETWEEN DATE(@start_date) AND DATE(@end_date)
  300. GROUP BY
  301. sc.`date`,
  302. IFNULL(asa.site_area_id, sc.site_area_id)
  303. HAVING
  304. SUM(sc.adv_expense) > 0;
  305.  
  306.  
  307. DROP TEMPORARY TABLE IF EXISTS tmp_site_deactivation_date;
  308. CREATE TEMPORARY TABLE tmp_site_deactivation_date (KEY(site_id))
  309. SELECT site_id, MAX(site_deactivation_date) AS site_deactivation_date
  310. FROM tablo.`commercial_regions_daily_revenue`
  311. WHERE demand_id <> -1
  312. AND site_deactivation_date IS NOT NULL
  313. GROUP BY site_id;
  314.  
  315. DROP TEMPORARY TABLE IF EXISTS tmp_deactivated_areas;
  316. CREATE TEMPORARY TABLE tmp_deactivated_areas (KEY(base_area_id))
  317. SELECT base_area_id, MAX(base_area_deactivation_date) AS base_area_deactivation_date
  318. FROM tablo.`deactivated_ad_units_yearly_forecast`
  319. WHERE base_area_id NOT IN (SELECT site_area_id FROM bi.`site_area_base` WHERE adv_expense_gbp_1 >= 0.2)
  320. GROUP BY base_area_id;
  321.  
  322. DROP TEMPORARY TABLE IF EXISTS tmp_user_create_date;
  323. CREATE TEMPORARY TABLE tmp_user_create_date (KEY (user_id))
  324. SELECT sc.user_id, MIN(sc.`date`) AS user_create_date
  325. FROM tablo.`activation_dates` sc
  326. GROUP BY sc.user_id;
  327.  
  328. DROP TEMPORARY TABLE IF EXISTS tmp_user_deactivation_date;
  329. CREATE TEMPORARY TABLE tmp_user_deactivation_date (KEY(user_id))
  330. SELECT user_id, MAX(user_deactivation_date) AS user_deactivation_date
  331. FROM tablo.`commercial_regions_daily_revenue`
  332. WHERE demand_id <> -1
  333. AND user_deactivation_date IS NOT NULL
  334. GROUP BY user_id;
  335.  
  336. DROP TEMPORARY TABLE IF EXISTS pipedrive_data;
  337. CREATE TEMPORARY TABLE pipedrive_data (KEY(publisher_id))
  338. SELECT po.organization_custom_clickio_user_id AS publisher_id,
  339. GROUP_CONCAT(poa.label) AS 'pd_org_lead_channel'
  340. FROM rabota_db.pipedrive_organization po
  341. JOIN rabota_db.pipedrive_organization_attrs poa
  342. ON po.organization_id = poa.organization_id AND poa.attr_name = 'lead_channel'
  343. WHERE po.organization_custom_clickio_user_id IS NOT NULL
  344. GROUP BY po.organization_id;
  345.  
  346. UPDATE tablo.`ad_unit_stat` aus
  347. LEFT JOIN pipedrive_data pd
  348. ON pd.publisher_id = aus.user_id
  349. SET aus.lead_channel = pd.pd_org_lead_channel
  350. WHERE aus.`date` BETWEEN @start_date AND @end_date;
  351.  
  352. #user_segment
  353. DROP TEMPORARY TABLE IF EXISTS bob_date_pub;
  354. CREATE TEMPORARY TABLE bob_date_pub
  355. SELECT
  356. `date`,
  357. IFNULL(u.`moved_to_user_id`,r.`publisher_id`) AS publisher_id,
  358. SUM(r.`adv_expense_gbp`) AS adv_expense_gbp
  359. FROM
  360. bi.book_of_business_report r
  361. JOIN rabota_db.`user` u
  362. ON (r.`publisher_id` = u.`user_id`)
  363. GROUP BY IFNULL(u.`moved_to_user_id`,r.`publisher_id`),
  364. `date`
  365. HAVING SUM(r.`adv_expense_gbp`)>1;
  366.  
  367. #summary for each publisher, no date filtering
  368. DROP TEMPORARY TABLE IF EXISTS bob_pub_summary;
  369. CREATE TEMPORARY TABLE bob_pub_summary (KEY (publisher_id))
  370. SELECT
  371. r.publisher_id,
  372. CASE
  373. WHEN AVG(`adv_expense_gbp`)>=0 AND AVG(`adv_expense_gbp`)<50 THEN '[1] <50'
  374. WHEN AVG(`adv_expense_gbp`)>=50 AND AVG(`adv_expense_gbp`)<500 THEN '[2] 50-500'
  375. WHEN AVG(`adv_expense_gbp`)>=500 AND AVG(`adv_expense_gbp`)<1000 THEN '[3] 500-1000'
  376. WHEN AVG(`adv_expense_gbp`)>=1000 AND AVG(`adv_expense_gbp`)<5000 THEN '[4] 1000-5000'
  377. WHEN AVG(`adv_expense_gbp`)>=5000 AND AVG(`adv_expense_gbp`)<10000 THEN '[5] 5000-10000'
  378. WHEN AVG(`adv_expense_gbp`)>=10000 THEN '[6] 10000+'
  379. ELSE 'error'
  380. END AS revenue_segment
  381. FROM
  382. bob_date_pub r
  383. JOIN rabota_db.`user` u
  384. ON (r.`publisher_id` = u.`user_id`)
  385. WHERE r.`adv_expense_gbp`>1 AND u.`billing_source`!='nobilling' AND r.`publisher_id`>0
  386. GROUP BY r.`publisher_id`;
  387.  
  388. #site_segment
  389. DROP TEMPORARY TABLE IF EXISTS bob_date_site;
  390. CREATE TEMPORARY TABLE bob_date_site
  391. SELECT
  392. `date`,
  393. site_id,
  394. IFNULL(u.`moved_to_user_id`,r.`publisher_id`) AS publisher_id,
  395. SUM(r.`adv_expense_gbp`) AS adv_expense_gbp
  396. FROM
  397. bi.book_of_business_report r
  398. JOIN rabota_db.`user` u
  399. ON (r.`publisher_id` = u.`user_id`)
  400. GROUP BY IFNULL(u.`moved_to_user_id`,r.`publisher_id`),
  401. `date`,
  402. site_id
  403. HAVING SUM(r.`adv_expense_gbp`)>1;
  404.  
  405. #summary for each publisher, no date filtering
  406. DROP TEMPORARY TABLE IF EXISTS bob_site_summary;
  407. CREATE TEMPORARY TABLE bob_site_summary (KEY (site_id))
  408. SELECT
  409. r.site_id,
  410. CASE
  411. WHEN AVG(`adv_expense_gbp`)>=0 AND AVG(`adv_expense_gbp`)<50 THEN '[1] <50'
  412. WHEN AVG(`adv_expense_gbp`)>=50 AND AVG(`adv_expense_gbp`)<500 THEN '[2] 50-500'
  413. WHEN AVG(`adv_expense_gbp`)>=500 AND AVG(`adv_expense_gbp`)<1000 THEN '[3] 500-1000'
  414. WHEN AVG(`adv_expense_gbp`)>=1000 AND AVG(`adv_expense_gbp`)<5000 THEN '[4] 1000-5000'
  415. WHEN AVG(`adv_expense_gbp`)>=5000 AND AVG(`adv_expense_gbp`)<10000 THEN '[5] 5000-10000'
  416. WHEN AVG(`adv_expense_gbp`)>=10000 THEN '[6] 10000+'
  417. ELSE 'error'
  418. END AS revenue_segment
  419. FROM
  420. bob_date_site r
  421. JOIN rabota_db.`user` u
  422. ON (r.`publisher_id` = u.`user_id`)
  423. WHERE r.`adv_expense_gbp`>1 AND u.`billing_source`!='nobilling' AND r.`publisher_id`>0
  424. GROUP BY r.`site_id`;
  425.  
  426. # temp tables are created here, because updated user deactivation date is used
  427. # last 30 days stats of active users by site
  428. DROP TEMPORARY TABLE IF EXISTS active_user_site_a;
  429. CREATE TEMPORARY TABLE active_user_site_a (KEY (user_id, url))
  430. SELECT t.user_id, t.`url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp
  431. FROM tablo.commercial_regions_daily_revenue t
  432. WHERE t.user_deactivation_date IS NULL
  433. AND t.date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND DATE(@end_date)
  434. AND t.demand_id <> -1
  435. GROUP BY t.user_id, t.`url`
  436. HAVING SUM(t.`adv_expense_gbp`) > 0;
  437.  
  438. # last 30 days stats of active users by site; copy of previous temp table, because temp tables cannot be used twice in one query
  439. DROP TEMPORARY TABLE IF EXISTS active_user_site_b;
  440. CREATE TEMPORARY TABLE active_user_site_b (KEY (user_id, url))
  441. SELECT t.user_id, t.`url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp
  442. FROM tablo.commercial_regions_daily_revenue t
  443. WHERE t.user_deactivation_date IS NULL
  444. AND t.date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND DATE(@end_date)
  445. AND t.demand_id <> -1
  446. GROUP BY t.user_id, t.`url`
  447. HAVING SUM(t.`adv_expense_gbp`) > 0;
  448.  
  449. # top sites of active users based on last 30 days
  450. DROP TEMPORARY TABLE IF EXISTS top_user_site_activ;
  451. CREATE TEMPORARY TABLE top_user_site_activ (KEY (user_id, url))
  452. SELECT a.user_id, a.url
  453. FROM active_user_site_a a
  454. WHERE a.total_adv_expense_gbp =
  455. (SELECT MAX(total_adv_expense_gbp)
  456. FROM active_user_site_b b WHERE b.user_id = a.user_id);
  457.  
  458. # all time stats of deactivated users by site
  459. DROP TEMPORARY TABLE IF EXISTS bob_top_user_site_a;
  460. CREATE TEMPORARY TABLE bob_top_user_site_a (KEY (publisher_id, site_url))
  461. SELECT t.publisher_id, t.`site_url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp
  462. FROM bi.`book_of_business_report` t
  463. GROUP BY t.publisher_id, t.`site_url`
  464. HAVING SUM(t.`adv_expense_gbp`) > 0;
  465.  
  466. # all time stats of deactivated users by site; copy of previous temp table, because temp tables cannot be used twice in one query
  467. DROP TEMPORARY TABLE IF EXISTS bob_top_user_site_b;
  468. CREATE TEMPORARY TABLE bob_top_user_site_b (KEY (publisher_id, site_url))
  469. SELECT t.publisher_id, t.`site_url`, SUM(t.`adv_expense_gbp`) AS total_adv_expense_gbp
  470. FROM bi.`book_of_business_report` t
  471. GROUP BY t.publisher_id, t.`site_url`
  472. HAVING SUM(t.`adv_expense_gbp`) > 0;
  473.  
  474. # top sites of deactivated users based on all time stats
  475. DROP TEMPORARY TABLE IF EXISTS top_user_site_deactiv;
  476. CREATE TEMPORARY TABLE top_user_site_deactiv (KEY (publisher_id, site_url))
  477. SELECT a.publisher_id, a.site_url
  478. FROM bob_top_user_site_a a
  479. WHERE a.total_adv_expense_gbp =
  480. (SELECT MAX(total_adv_expense_gbp)
  481. FROM bob_top_user_site_b b WHERE b.publisher_id = a.publisher_id);
  482.  
  483. DROP TEMPORARY TABLE IF EXISTS tmp_reactivation_sites;
  484. CREATE TEMPORARY TABLE tmp_reactivation_sites (KEY(reactivation_date, site_id))
  485. SELECT site_id, MAX(reactivation_date) AS reactivation_date
  486. FROM tablo.`reactivation_sites`
  487. GROUP BY site_id;
  488.  
  489. DROP TEMPORARY TABLE IF EXISTS tmp_update_final;
  490. CREATE TEMPORARY TABLE tmp_update_final (KEY(site_area_id))
  491. SELECT
  492. sa.`site_area_id`,
  493. IFNULL(sa.name, 'no_area_name') AS area_name,
  494. #area_type
  495. CASE
  496. WHEN sad.is_feed = 1 THEN 'feed'
  497. WHEN sad.is_prism = 1 AND sad.block_type = 'interstitial' THEN 'prism_interstitial'
  498. WHEN sad.is_prism = 1 AND sad.creative_type = 'outbrain' THEN 'prism_native_outbrain'
  499. WHEN sad.is_prism = 1 AND stal.adunit_type = 'smart' THEN 'prism_smart'
  500. WHEN sad.is_prism = 1 AND sad.creative_type = 'video-thumbnail' THEN 'prism_thumbnail'
  501. WHEN sad.is_prism = 1 AND stal.adunit_type = 'sticky' THEN 'prism_sticky'
  502. WHEN sad.is_prism = 1 THEN 'prism_fixed'
  503. #WHEN sa.name LIKE '%interstitial%' THEN 'interstitial'
  504. WHEN sad.block_type = 'interstitial' THEN 'interstitial'
  505. WHEN sad.block_type = 'inarticle' THEN 'smart'
  506. WHEN sad.location_selector IS NOT NULL AND sad.auto_insert_max_blocks > 1 THEN 'smart'
  507. #WHEN sa.name LIKE '%outbrain%' THEN 'native_outbrain'
  508. WHEN sad.creative_type = 'outbrain' THEN 'native_outbrain'
  509. WHEN sad.creative_type = 'video-thumbnail' THEN 'thumbnail'
  510. WHEN sad.creative_type = 'ogury_header' THEN 'header'
  511. WHEN sad.creative_type = 'skin_toproll' THEN 'toproll'
  512. #WHEN sa.name LIKE '%SKIN%' COLLATE utf8_bin THEN 'skin'
  513. WHEN sad.creative_type = 'sublimeskins' THEN 'skin'
  514. #WHEN sa.name LIKE '%In-image%' THEN 'in-image'
  515. WHEN (sa.name LIKE '%video%' OR sa.name LIKE '%видео%') AND sa.`name` NOT LIKE '%Montevideo%' THEN 'video'
  516. #WHEN sa.name LIKE '%multiplex%' THEN 'native_multiplex'
  517. WHEN sad.is_adfox = 1 THEN 'adx-adfox'
  518. WHEN sad.`block_type` = 'horizontal_sticky' AND (hsticky_type = 'bottom' OR sad.is_amp = 1) THEN 'sticky_horizontal_bottom'
  519. WHEN sad.`block_type` = 'horizontal_sticky' AND hsticky_type = 'top' THEN 'sticky_horizontal_top'
  520. WHEN sad.`block_type` = 'high_viewability_header' THEN 'viewable_header'
  521. WHEN sad.`block_type` = 'horizontal_sticky' THEN 'sticky_horizontal'
  522. WHEN (sad.sticky = 1 AND (sad.sticky_adunits_limit = 1 OR sad.sticky_adunits_limit IS NULL) AND sa.name LIKE '%mirror%') OR sad.sticky_mirror_mode = 1 THEN 'sticky_mirror'
  523. WHEN sad.sticky = 1 AND (sad.sticky_adunits_limit = 1 OR sad.sticky_adunits_limit IS NULL) THEN 'sticky_single'
  524. WHEN sad.sticky = 1 AND sad.sticky_adunits_limit > 1 THEN 'sticky_multiple'
  525. ELSE 'fixed'
  526. END AS area_type,
  527. #area_targeting
  528. IF(sad.is_amp = 1, 'AMP',
  529. IF(CONCAT(IF(sad.show_for_desktop = 1, 'D', ''), IF(sad.show_for_tablet = 1, 'T', ''), IF(sad.show_for_mobile = 1, 'M', '')) = '', 'None',
  530. CONCAT(IF(sad.show_for_desktop = 1, 'D', ''), IF(sad.show_for_tablet = 1, 'T', ''), IF(sad.show_for_mobile = 1, 'M', '')))) AS area_targeting,
  531. #area_size
  532. IF(sz.npm_size_id IS NULL, 'Unknown',
  533. IF(sz.npm_size_id = 40, 'Responsive',
  534. IF(sz.npm_size_id = 41, 'Custom',
  535. CONCAT(sz.width, 'x', sz.height)))) AS area_size,
  536. #area_start_date
  537. ad.area_start_date,
  538. IFNULL(u.commercial_region, 'other') AS commercial_region,
  539. IFNULL(sm.sales_manager, 'None') AS sales_manager,
  540. IFNULL(am.account_manager, 'None') AS account_manager,
  541. IFNULL(jsm.junior_sales_manager , 'None') AS junior_sales_manager,
  542. IFNULL(c.name, 'Unknown') AS site_category,
  543. sd.site_start_date AS site_start_date,
  544. site_deac.site_deactivation_date,
  545. daus.`base_area_deactivation_date` AS area_deactivation_date,
  546. tmp_user.user_create_date AS user_activation_date,
  547. user_deac.user_deactivation_date,
  548. IF(user_deac.user_deactivation_date IS NOT NULL, u.`stopping_reason`, NULL) AS user_stop_reason,
  549. bob_pub.revenue_segment AS user_segment,
  550. bob_site.revenue_segment AS site_segment,
  551. IF(user_deac.user_deactivation_date IS NOT NULL, top_site_deactiv.site_url, top_site_activ.url) AS user_top_site,
  552. tmp_reactiv.reactivation_date AS reactivation_month
  553. FROM rabota_db.site_area sa
  554. LEFT JOIN rabota_db.site_area_design_24 sad
  555. ON sad.site_area_id = sa.site_area_id
  556. LEFT JOIN rabota_db.npm_size sz
  557. ON sz.npm_size_id = sad.npm_size_id
  558. LEFT JOIN tmp_area_start_date ad
  559. ON ad.area_id = sa.site_area_id
  560. LEFT JOIN rabota_db.`site` s
  561. ON s.`site_id` = sa.`parent_id`
  562. LEFT JOIN rabota_db.`user` u
  563. ON u.user_id = s.`user_id`
  564. LEFT JOIN tmp_current_sales_managers sm
  565. ON sm.user_id = s.user_id
  566. LEFT JOIN tmp_current_account_managers am
  567. ON am.user_id = s.user_id
  568. LEFT JOIN tmp_current_junior_sales_managers jsm
  569. ON jsm.user_id = s.user_id
  570. LEFT JOIN rabota_db.site_category c
  571. ON c.category_id = s.category_id
  572. LEFT JOIN tmp_site_start_date sd
  573. ON sd.site_id = s.site_id
  574. LEFT JOIN tmp_site_deactivation_date site_deac
  575. ON site_deac.site_id = s.`site_id`
  576. LEFT JOIN tmp_deactivated_areas daus
  577. ON daus.`base_area_id` = sa.`site_area_id`
  578. LEFT JOIN tmp_user_create_date tmp_user
  579. ON tmp_user.user_id = s.`user_id`
  580. LEFT JOIN tmp_user_deactivation_date user_deac
  581. ON user_deac.user_id = s.`user_id`
  582. LEFT JOIN bob_pub_summary bob_pub
  583. ON bob_pub.publisher_id = s.`user_id`
  584. LEFT JOIN bob_site_summary bob_site
  585. ON bob_site.site_id = s.site_id
  586. LEFT JOIN top_user_site_activ top_site_activ
  587. ON top_site_activ.user_id = s.`user_id`
  588. LEFT JOIN top_user_site_deactiv top_site_deactiv
  589. ON top_site_deactiv.publisher_id = s.`user_id`
  590. LEFT JOIN tmp_reactivation_sites tmp_reactiv
  591. ON tmp_reactiv.`site_id` = s.`site_id`
  592. LEFT JOIN prism.`site_template_adunit_link` stal
  593. ON stal.site_area_id = sad.site_area_id
  594. ;
  595.  
  596.  
  597. UPDATE tablo.`ad_unit_stat` aus
  598. JOIN tmp_update_final tmp
  599. ON aus.`area_id` = tmp.site_area_id
  600. SET
  601. aus.`area_name` = tmp.area_name,
  602. aus.`area_type` = tmp.area_type,
  603. aus.`area_targeting` = tmp.area_targeting,
  604. aus.`area_size` = tmp.area_size,
  605. aus.`area_start_date` = tmp.area_start_date,
  606. aus.`area_deactivation_date` = tmp.area_deactivation_date,
  607. aus.`commercial_region` = tmp.commercial_region,
  608. aus.`sales_manager` = tmp.sales_manager,
  609. aus.`account_manager` = tmp.account_manager,
  610. aus.`junior_sales_manager` = tmp.junior_sales_manager,
  611. aus.`site_category` = tmp.site_category,
  612. aus.`site_start_date` = tmp.site_start_date,
  613. aus.`site_deactivation_date` = tmp.site_deactivation_date,
  614. aus.`user_activation_date` = tmp.user_activation_date,
  615. aus.`user_deactivation_date` = tmp.user_deactivation_date,
  616. aus.`user_stop_reason` = tmp.user_stop_reason,
  617. aus.`user_segment` = tmp.user_segment,
  618. aus.`site_segment` = tmp.site_segment,
  619. aus.`user_top_site` = tmp.user_top_site,
  620. aus.`reactivation_month` = tmp.reactivation_month
  621. ;
  622.  
  623. SELECT
  624. 1 AS STATUS,
  625. 'OK' AS message;
Advertisement
Add Comment
Please, Sign In to add comment