使用具有唯一时间戳的每个 ID 检索数据,从中检索数据

Retrieving data with each ID having a unique timestamp from which to retrieve data from

目前正在使用 Looker SQL Runner 和我需要检索每个网站 ID 发生的会话总数,每个网站 ID 都有不同的时间点,我需要从头开始检索数据直到那个时间点。

格式应该是这样的:

website_id 日期 total_sessions total_users
1 2021-08-13 100 98
2 2021-07-15 125 105
3 2021-06-29 98 85

现在,我的代码如下所示:

with base as
(
SELECT
      website_id
      ,session_count
      ,user_id
      ,'timestamp'
FROM page_views_y2
WHERE website_id in (100604,100577,1078,100501)
GROUP BY 1,2,3
),

min_time as
(
SELECT
      website_id
      ,session_count
      ,user_id
      ,min(timestamp) as session_start
FROM page_views_y2
WHERE website_id in (100604,100577,1078,100501)
GROUP BY 1,2,3
),

combined_count AS
(
SELECT
      base.website_id
      ,session_start
      ,COUNT(DISTINCT min_time.user_id||session_start||min_time.session_count) AS distinct_combined_count
      ,COUNT(DISTINCT base.user_id) AS distinct_users
FROM base
LEFT JOIN min_time
ON base.user_id=min_time.user_id
AND base.website_id=min_time.website_id
GROUP BY 1,2
)

SELECT
      website_id
      ,CASE 
        WHEN website_id=100604 AND session_start < (timestamp '2021-07-27') THEN distinct_combined_count
        WHEN website_id in (100577,1078) AND session_start < (timestamp '2021-07-26') THEN distinct_combined_count
        WHEN website_id=100501 AND session_start < (timestamp '2021-07-16') THEN distinct_combined_count
      ELSE 0 END AS final_count
      ,CASE 
        WHEN website_id=100604 AND session_start < (timestamp '2021-07-27') THEN distinct_users
        WHEN website_id in (100577,1078) AND session_start < (timestamp '2021-07-26') THEN distinct_users
        WHEN website_id=100501 AND session_start < (timestamp '2021-07-16') THEN distinct_users
      ELSE 0 END AS final_distinct_users
FROM combined_count
GROUP BY 1

但我将 运行 保留为错误:列“combined_count.session_start”必须出现在 GROUP BY 子句中或在聚合函数中使用,尽管它显然在分组依据中。

此外,这只是四个网站 ID,我还需要处理另外 30 个,所以如果我能让这四个网站 ID 正常工作,那么我可以将其扩展到整个 ID 列表及其各自的时间点。

感谢您的宝贵时间。

您需要汇总“CASE”语句。