volday

К-во транз- от CPA-вебмастера по вр- после смены ист-траф--п

Sep 17th, 2019
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.01 KB | None | 0 0
  1. --Количество транзакций от CPA вебмастера по времени после смены источника трафика за последние 30 дней
  2. SELECT
  3.         trafficSource_source,
  4.         trafficSource_medium,
  5.         trafficSource_campaign,
  6.         trafficSource_adContent,
  7.     transaction_numberOfTransactions,
  8.     bucket1,
  9.     bucket2,
  10.     bucket3,
  11.     bucket4,
  12.     bucket5,
  13.     bucket6,
  14.  
  15.  
  16. FROM
  17. (
  18.     SELECT
  19.             trafficSource_source,
  20.             trafficSource_medium,
  21.             trafficSource_campaign,
  22.             trafficSource_adContent,
  23.         transaction_numberOfTransactions,
  24.         bucket1Value / transaction_numberOfTransactions AS bucket1,
  25.         bucket2Value / transaction_numberOfTransactions AS bucket2,
  26.         bucket3Value / transaction_numberOfTransactions AS bucket3,
  27.         bucket4Value / transaction_numberOfTransactions AS bucket4,
  28.         bucket5Value / transaction_numberOfTransactions AS bucket5,
  29.         bucket6Value / transaction_numberOfTransactions AS bucket6
  30.     FROM
  31.     (
  32.         SELECT
  33.                 trafficSource_source,
  34.                 trafficSource_medium,
  35.                 trafficSource_campaign,
  36.                 trafficSource_adContent,
  37.             SUM(transaction_numberOfTransactions) AS transaction_numberOfTransactions,
  38.             SUM(IF(time_diff_sec IS NULL OR NOT different, transaction_numberOfTransactions, 0)) AS bucket1Value,
  39.             SUM(IF(different AND time_diff_sec < 60, transaction_numberOfTransactions, 0)) AS bucket2Value,
  40.             SUM(IF(different AND time_diff_sec >= 60 AND time_diff_sec < 300, transaction_numberOfTransactions, 0)) AS bucket3Value,
  41.             SUM(IF(different AND time_diff_sec >= 300 AND time_diff_sec < 600, transaction_numberOfTransactions, 0)) AS bucket4Value,
  42.             SUM(IF(different AND time_diff_sec >= 600 AND time_diff_sec < 1200, transaction_numberOfTransactions, 0)) AS bucket5Value,
  43.             SUM(IF(different AND time_diff_sec >= 1200, transaction_numberOfTransactions, 0)) AS bucket6Value
  44.         FROM
  45.         (
  46.             SELECT
  47.                 sessionId,
  48.                 transaction_numberOfTransactions,
  49.                     trafficSource_source,
  50.                     trafficSource_medium,
  51.                     trafficSource_campaign,
  52.                     trafficSource_adContent,
  53.                 (IF(trafficSource_source IS NOT NULL, prev_source IS NOT NULL AND trafficSource_source != prev_source, prev_source IS NULL))
  54.                 OR (IF(trafficSource_medium IS NOT NULL, prev_medium IS NOT NULL AND trafficSource_medium != prev_medium, prev_medium IS NULL))
  55.                 OR (IF(trafficSource_adContent IS NOT NULL, prev_adContent IS NOT NULL AND trafficSource_adContent != prev_adContent, prev_adContent IS NULL))
  56.                 OR (IF(trafficSource_keyword IS NOT NULL, prev_keyword IS NOT NULL AND trafficSource_keyword != prev_keyword, prev_keyword IS NULL))
  57.                 OR (IF(trafficSource_campaign IS NOT NULL, prev_source IS NOT NULL AND trafficSource_campaign != prev_campaign, prev_campaign IS NULL)) AS different,
  58.                 visitStartTime - prev_time AS time_diff_sec
  59.             FROM
  60.             (
  61.                 SELECT
  62.                     sessionId,
  63.                     visitStartTime,
  64.                     transaction_numberOfTransactions,
  65.                     SOURCE AS trafficSource_source,
  66.                     medium AS trafficSource_medium,
  67.                     adContent AS trafficSource_adContent,
  68.                     keyword AS trafficSource_keyword,
  69.                     campaign AS trafficSource_campaign,
  70.                     LAG(visitEndTime) OVER(PARTITION BY visitorId ORDER BY visitStartTime) AS prev_time,
  71.                     LAG(SOURCE) OVER(PARTITION BY visitorId ORDER BY visitStartTime) AS prev_source,
  72.                     LAG(medium) OVER(PARTITION BY visitorId ORDER BY visitStartTime) AS prev_medium,
  73.                     LAG(adContent) OVER(PARTITION BY visitorId ORDER BY visitStartTime) AS prev_adContent,
  74.                     LAG(keyword) OVER(PARTITION BY visitorId ORDER BY visitStartTime) AS prev_keyword,
  75.                     LAG(campaign) OVER(PARTITION BY visitorId ORDER BY visitStartTime) AS prev_campaign
  76.                 FROM
  77.                 (
  78.                     SELECT
  79.                         sessionId AS sessionId,
  80.                         FIRST(trafficSource.SOURCE) AS SOURCE,
  81.                         FIRST(trafficSource.medium) AS medium,
  82.                         FIRST(trafficSource.adContent) AS adContent,
  83.                         FIRST(trafficSource.keyword) AS keyword,
  84.                         FIRST(trafficSource.campaign) AS campaign,
  85.                         MIN(hits.TIME) AS visitStartTime,
  86.                         MAX(hits.TIME) AS visitEndTime,
  87.                         FIRST(IF(USER.id IS NULL OR REGEXP_MATCH(USER.id, '^$|not set|undefined|^0$|(not set)|false|none'), clientId, USER.id)) AS visitorId,
  88.                         SUM(IF(hits.TRANSACTION.transactionId IS NOT NULL AND hits.eCommerceAction.action_type!='refund', 1, 0)) AS transaction_numberOfTransactions,
  89.                         FIRST(DATE) AS DATE
  90.                     FROM
  91.                         TABLE_DATE_RANGE([owox-140513:OWOXBI_Streaming.session_streaming_], DATE_ADD(TIMESTAMP(DATE_ADD(UTC_USEC_TO_DAY(NOW()), -30,'DAY')), -7, 'DAY'), TIMESTAMP(DATE_ADD(DATE_ADD(UTC_USEC_TO_DAY(DATE_ADD(UTC_USEC_TO_DAY(NOW()), -1,'DAY')), 1, 'day'), -1, 'second')))
  92.                     GROUP BY
  93.                         sessionId
  94.                 )
  95.                 WHERE TIMESTAMP(DATE) >= TIMESTAMP(DATE_ADD(UTC_USEC_TO_DAY(NOW()), -30,'DAY'))
  96.             )
  97.         )
  98.         WHERE transaction_numberOfTransactions > 0 AND      REGEXP_MATCH(LOWER(trafficSource_medium), r'(?i)cpa|partn|af|ret')
  99.  
  100.         GROUP BY
  101.                 trafficSource_source,
  102.                 trafficSource_medium,
  103.                 trafficSource_campaign,
  104.                 trafficSource_adContent
  105.     )
  106. )
  107.  
  108.         ORDER BY transaction_numberOfTransactions DESC
  109.         LIMIT 2500
Add Comment
Please, Sign In to add comment