with t1 as(
      select user_pseudo_id
            ,FORMAT_TIMESTAMP('%H', datetime)AS 訪問時刻
            ,count(distinct FORMAT_TIMESTAMP('%H', datetime)) as 訪問時刻数
      FROM `データテーブル`
      WHERE DATE = "日付"
      group by user_pseudo_id,訪問時刻
      order by user_pseudo_id
),
t2 as(
      select user_pseudo_id
            ,case
              when sum(訪問時刻数) = 1 then '1回/日'
              when sum(訪問時刻数) between 2 and 5 then '2〜5回/日'
              when sum(訪問時刻数) between 6 and 9 then '6〜9回/日'
              when sum(訪問時刻数) >= 10 then '10回以上'
              else 'データなし'
             end as 訪問時刻区分
      from t1
      group by user_pseudo_id
      order by 訪問時刻区分
),
t3 as(
      select t1.user_pseudo_id
            ,t1.訪問時刻
            ,t1.訪問時刻数
            ,t2.訪問時刻区分
      from t1
      left join t2
      on t1.user_pseudo_id = t2.user_pseudo_id
),
t4 as(
      select distinct user_pseudo_id,訪問時刻区分
      from t3
      order by 訪問時刻区分
)
select 訪問時刻区分,count(user_pseudo_id) as 訪問時刻別訪問者数
from t4
group by 訪問時刻区分
order by 訪問時刻区分
 
その他のコード