解答
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