-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtop-bottom-queries
50 lines (48 loc) · 1.34 KB
/
top-bottom-queries
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
WITH
ct AS (
SELECT
query as query,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions,
FROM
marketingdata-393009.searchconsole.searchdata_site_impression
WHERE
data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY)
GROUP BY query
),
prev AS (
SELECT
query,
SUM(clicks) AS clicks,
SUM(impressions) AS impressions,
FROM
marketingdata-393009.searchconsole.searchdata_site_impression
WHERE
data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 56 DAY)
AND data_date < DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY)
GROUP BY query
)
SELECT
subquery.query,
subquery.current_clicks,
subquery.click_diff,
subquery.current_impr,
subquery.impr_diff,
subquery.prev_clicks,
subquery.prev_impr
FROM (
SELECT
COALESCE(ct.query, prev.query) AS query,
IFNULL(SUM(ct.clicks), 0) AS current_clicks,
IFNULL((SUM(ct.clicks) - IFNULL(SUM(prev.clicks), 0)), 0) AS click_diff,
IFNULL(SUM(ct.impressions), 0) AS current_impr,
IFNULL((SUM(ct.impressions) - IFNULL(SUM(prev.impressions), 0)), 0) AS impr_diff,
IFNULL(SUM(prev.clicks), 0) AS prev_clicks,
IFNULL(SUM(prev.impressions), 0) AS prev_impr,
FROM
ct
FULL OUTER JOIN
prev ON ct.query = prev.query
GROUP BY COALESCE(ct.query, prev.query)
) AS subquery
ORDER BY subquery.impr_diff ASC;