【问题标题】:Keep users that visited the website more than one day留住访问网站超过一天的用户
【发布时间】:2021-08-09 18:11:53
【问题描述】:

我有一个如下所示的表格:

date user
2020-01-01 James
2020-01-02 James
2020-02-03 Sarah
2020-03-05 Charlie
2020-03-05 Charlie
2020-03-06 Charlie
2020-04-01 Susan
2020-04-01 Susan

我要做的是让访问该网站的用户超过一天(不超过一次)。根据上表,我应该只保留 James 和 Charlier,而忽略 Sarah 和 Susan。 莎拉应该被排除在外,因为她一天只访问该网站一次,而苏珊应该被排除在外,因为她访问了该网站两次,但只在一天内访问。

你能帮忙怎么做吗?

【问题讨论】:

  • 您至少尝试过什么吗?向我们展示一些努力,问题是什么?所以我们可以提供帮助,而不仅仅是给你做作业!

标签: sql google-bigquery


【解决方案1】:

以下使用DISTINCT查找唯一记录,然后使用group by和have子句过滤访问多天的用户

SELECT
    username
FROM (
    SELECT DISTINCT
        username,
        date
    FROM
        my_table
) t
GROUP BY 
    username
HAVING
    COUNT(username) > 1

【讨论】:

  • 非常感谢!
【解决方案2】:

使用聚合和having

select username
from t
group by username
having min(date) <> max(date);

如果您想要原始行,请使用限定:

select t.*
from t
where 1=1
qualify count(distinct date) over (partition by username) > 1;

exists:

select t.*
from t
where exists (select 1
              from t t2
              where t2.username = t.username and t2.date <> t.date
             );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多