解答
229
問題に誤字があり、誠に申し訳ありません。以下のとおり訂正させていただきます。
[誤]
結果テーブルは、ランディングページ(landing_page)、セッション中の2ページ目(second_page)、セッション(session)の3カラムとし、[session]の多い順にトップ5を表示してください。
[正]
結果テーブルは、ランディングページ(landing_page)、セッション中の2ページ目(second_page)、セッション中の3ページ目(third_page)、セッション(session)の4カラムとし、[session]の多い順にトップ5を表示してください。
SQL文(クエリ)
WITH master AS (
SELECT
cid
, session_count
, MAX(lp) AS landing_page
, MAX(sp) AS second_page
, MAX(tp) AS third_page
FROM
(
SELECT
cid
, session_count
, date_time
, page_wo_parameter
, FIRST_VALUE(page_wo_parameter)
OVER (PARTITION BY cid, session_count ORDER BY date_time)
AS lp
, nth_value(page_wo_parameter, 2)
OVER (PARTITION BY cid, session_count ORDER BY date_time)
AS sp
, nth_value(page_wo_parameter, 3)
OVER (PARTITION BY cid, session_count ORDER BY date_time)
AS tp
FROM
(
SELECT
*
, REGEXP_EXTRACT(page, r"[^\?]+") AS page_wo_parameter
FROM
sample.web_log
)
)
GROUP BY
cid
, session_count
)
SELECT
landing_page
, second_page
, third_page
, COUNT(*) AS sessions
FROM
master
GROUP BY
landing_page
, second_page
, third_page
HAVING landing_page = "/"
ORDER BY
4 DESC
LIMIT 5



