You are given two tables for an e-commerce product.
shopsA shop dimension table that contains duplicate rows for the same shop_id.
Columns:
shop_id
(INT)
shop_name
(STRING)
created_at
(TIMESTAMP)
Notes:
shops
may contain multiple rows per
shop_id
.
sessionsA session fact table.
Columns:
session_id
(STRING)
shop_id
(INT)
started_at
(TIMESTAMP)
url
(STRING)
Assume:
DATE(started_at)
.
sessions
).
day
,
session_cnt
.
shops
has duplicates, you must
deduplicate it before joining
.
day
,
shop_id
,
shop_name
,
session_cnt
.
day
shop_id
session_cnt
(0 if there were no sessions that day)
rolling_7d_avg_excl_today
: average of the previous 7 days’
session_cnt
, i.e. days
[day-7, day-1]
.
sessions.url
, extract the value of the query parameter
utm_campaign
.
https://a.com/?utm_source=google&utm_campaign=summer_sale
→
summer_sale
https://a.com/path?x=1
→
NULL
session_id
,
utm_campaign
.
Use standard SQL (any common dialect is fine), and ensure each query can be run independently.