我正在尝试获取 activity 的查询,不包括注册日期(特定 ID 的第一次出现)
I'm trying to get a query to get activity, excluding the day of sign up (first occurrence of a specific id)
我有一个带有行 ID 和日期的基本 table "events"。它会在用户每次与站点交互(注册或登录)时显示。
我想计算每天的活跃用户数。但是我想排除用户注册当天的所有activity。
目前,相同的 table 格式但没有第一次出现的 ID 可以解决我的问题。
试试这个
SELECT date, userid FROM consumer.events WHERE Count(userid) > 1 ORDER BY date, userid
说明
此 select 语句会将查询限制为仅显示 userid
未首次出现的位置
好的,所以您对每个事件的本质需求是:
- user_id
- acitivity_date
- first_activity_date
您应该已经从事件 table 中获得了前两个:对于 first_activity_date,您可以使用 window 函数来计算:以下是一个示例查询:
SELECT
activity_date,
COUNT(*) AS cnt
FROM (
SELECT
user_id,
activity_date,
MIN(activity_date) OVER (PARTITION BY user_id) AS first_activity_date
FROM
[project_id:dataset.events]
)
WHERE
activity_date != first_activity_date
GROUP BY
1
ORDER BY
1
我有一个带有行 ID 和日期的基本 table "events"。它会在用户每次与站点交互(注册或登录)时显示。
我想计算每天的活跃用户数。但是我想排除用户注册当天的所有activity。
目前,相同的 table 格式但没有第一次出现的 ID 可以解决我的问题。
试试这个
SELECT date, userid FROM consumer.events WHERE Count(userid) > 1 ORDER BY date, userid
说明
此 select 语句会将查询限制为仅显示 userid
未首次出现的位置
好的,所以您对每个事件的本质需求是:
- user_id
- acitivity_date
- first_activity_date
您应该已经从事件 table 中获得了前两个:对于 first_activity_date,您可以使用 window 函数来计算:以下是一个示例查询:
SELECT
activity_date,
COUNT(*) AS cnt
FROM (
SELECT
user_id,
activity_date,
MIN(activity_date) OVER (PARTITION BY user_id) AS first_activity_date
FROM
[project_id:dataset.events]
)
WHERE
activity_date != first_activity_date
GROUP BY
1
ORDER BY
1