Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.70 KB | None | 0 0
  1. WITH DATA AS (  
  2.               WITH rpt AS (  
  3.                 WITH rpt AS (  
  4.                   SELECT f.country,  
  5.                          city,  
  6.                          CASE WHEN audience='i' THEN 'All Campaign'
  7.                               WHEN audience='s' THEN 'Visitors'  
  8.                               WHEN audience='c' THEN 'Clickers'  
  9.                               WHEN audience='v' THEN 'Converters'  
  10.                           END AS audience,  
  11.                          CAST(SUM(imp_events) AS float8) AS impressions,  
  12.                          CAST(SUM(clk_events) AS float8) AS clicks,  
  13.                          CAST(SUM(cnv_events) AS float8) AS conversions,  
  14.                          CAST(SUM(pv_events) AS float8) AS postviewconvs,  
  15.                          CAST(SUM(pc_events) AS float8) AS postclickconvs,  
  16.                          CAST(SUM(imp_users) AS float8) AS uniques,  
  17.                          SUM(CASE WHEN crate.label = 'CPC' THEN camp.cost_value*clk_events ELSE camp.cost_value*imp_events/1000 END) AS cost,
  18.                          SUM(CASE WHEN audience='i' THEN SUM(imp_events) ELSE 0 END) OVER(partition BY camp.label,f.country,city) AS allcamp_impressions,
  19.                          audience AS raw_audience  
  20.                   FROM datamart.db_campaign_geo_uniques f  
  21.                   INNER JOIN tb_as_campaign camp ON f.campaign_id = camp.id  
  22.                   INNER JOIN tb_as_lookup crate ON crate.id = camp.cost_type  
  23.                   WHERE campaign_id = 2487612
  24.                     AND camp.advertiser = 406640
  25.                     AND f.city != '?'
  26.                   GROUP BY camp.label, f.country, city, f.audience  
  27.                 )  
  28.                 SELECT campaign,country,city,audience,impressions,clicks,uniques,conversions,postviewconvs,postclickconvs,cost,
  29.                        dense_rank() OVER(partition BY campaign ORDER BY allcamp_impressions DESC) AS rnk
  30.                 FROM rpt
  31.               )
  32.               SELECT country,  
  33.                      city,        
  34.                      audience,        
  35.                      impressions,  
  36.                      clicks,  
  37.                      uniques,  
  38.                      CASE WHEN COALESCE(impressions,0) = 0 THEN NULL ELSE to_char(CAST(COALESCE(clicks,0) AS float8)/impressions * 100 END AS ctr,    
  39.                      conversions,  
  40.                      postviewconvs,  
  41.                      postclickconvs,  
  42.                      CASE WHEN COALESCE(conversions,0) = 0 OR COALESCE(cost,0) = 0  THEN NULL ELSE to_char(cost/conversions END AS cpa    
  43.               FROM rpt  
  44.               WHERE rnk <= 30    
  45.             )      
  46.             SELECT *  
  47.             FROM DATA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement