google-bigquery - 根据 if 条件,从第一次开始对网站访问者进行分类
问题描述
你能帮我用sql语句吗,最好它应该在大查询中工作。我有 3 列用户 ID、日期、主机名。我需要在以下条件下创建附加列 - client_type:当用户 ID 第一次来到主机名 =“online-store.com”时,从该日期开始,此特定用户 ID 的client_type将始终为“current_client”,否则为“visitor”。
例如,在图像(附加链接)中,我们有 userid = 1 和 4 已成为“当前客户”。用户 4 只是一个访客,但在访问 hostname = "online-store.com" 后,他将始终被归类为“当前客户”。在此处输入图像描述
解决方案
这应该很好:
#standardSQL
with userdates as (
select userid, hostname, min(date) as mindate from `dataset.table` where hostname = 'online-store.com' group by userid, hostname
)
select u.userid, u.date, u.hostname, case when u.date >= ud.mindate then 'current_user' else 'visitor' end as client_type
from `dataset.table` u
left outer join userdates ud on u.userid = ud.userid
order by 1, 2
推荐阅读
- javascript - 类型错误:无法读取未定义的属性“配置”
- r - Using FOR loop to fill in a data from in R (code review)
- android - Configuring the host in server to be accessible to external devices
- asp.net-mvc - texbox 值未显示在 url
- c# - 将 BSON 流解码为人类可读的字符串
- html - Mailchimp:内部带有条件合并标签块的无序列表?
- f# - F#从两个列表中创建对列表
- reactjs - 如何在 Android 完整证明示例中从网络加载反应原生 JS 包?
- java - 确定哪种类型的异常是可抛出的
- c# - 为什么在 Func 中解构
不起作用,尽管有 Deconstruct 扩展方法?