-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclustered.sql
63 lines (63 loc) · 1.6 KB
/
clustered.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
SELECT
CONCAT(SUBSTR(CAST (timestamp AS STRING),0,4), SUBSTR(CAST (timestamp AS STRING),6,2), SUBSTR(CAST (timestamp AS STRING),9,2)) AS date,
keyword,
market,
location,
device,
rank,
base_rank,
url,
advertiser_competition,
gms,
rms,
cpc,
tags,
CASE
WHEN rank = 1 THEN "1. (1)"
WHEN rank = 2 THEN "2. (2)"
WHEN rank = 3 THEN "3. (3)"
WHEN rank <= 10 THEN "4. (4-10)"
WHEN rank <= 20 THEN "5. (11-20)"
WHEN rank < 120 THEN "6. (21-119)"
ELSE "NR"
END AS grouping_strategy_a,
CASE
WHEN rank <= 3 THEN "1. (1-3)"
WHEN rank <= 10 THEN "2. (4-10)"
WHEN rank <= 20 THEN "3. (11-20)"
WHEN rank < 120 THEN "4. (21-119)"
ELSE "NR"
END AS grouping_strategy_b,
CASE
WHEN rank <= 10 THEN "1"
WHEN rank <= 20 THEN "2"
WHEN rank <= 120 THEN "3+"
ELSE "NR"
END AS serp_page,
ctr,
CAST(ctr * gms AS INT64) AS estimated_global_sessions,
CAST(ctr * rms AS INT64) AS estimated_regional_sessions,
CAST(0.3 * gms AS INT64) AS maximum_global_sessions,
CAST(0.3 * rms AS INT64) AS maximum_regional_sessions
FROM (
SELECT
stat.timestamp AS timestamp,
stat.keyword AS keyword,
stat.market AS market,
stat.location AS location,
stat.device AS device,
stat.rank AS rank,
stat.base_rank AS base_rank,
stat.url AS url,
stat.advertiser_competition AS advertiser_competition,
stat.gms AS gms,
stat.rms AS rms,
stat.cpc AS cpc,
stat.tags AS tags,
ctrs.calculated AS ctr
FROM
`bq-stat.%CLIENT%.stat` AS stat
LEFT JOIN
`bq-stat.stat_config.ctrs` AS ctrs
ON
stat.rank = ctrs.rank)