解答

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

結果テーブル

結果テーブル

サポートページに戻る