在使用子句时计数不同
Posted
技术标签:
【中文标题】在使用子句时计数不同【英文标题】:Count distint while using clause over 【发布时间】:2021-07-15 10:58:34 【问题描述】:我必须找到在 BigQuery 中统计最近(例如 30 天)中不同用户的解决方案。我的结果与我从 Google Analytics 获得的结果并不接近。
我在下一步中对不同的用户进行了子查询,我从子查询中选择结果为 Active_Users_28_Days(来自(选择...),我正在计算过去 28 天内访问网站的唯一访问者的数量(如下面查询的一部分) ,但我的结果太高了,我不知道为什么。
COUNT(Visitors) OVER (PARTITION BY Date ORDER BY Date ROWS BETWEEN 27 PRECEDING and CURRENT ROW) as Active_Users_28_Days
你知道为什么会这样吗?我也想使用类似的方式计算特定类型的客户,但我不知道为什么我的结果是计算 2 天的高事件(前 1 行和当前行之间的行或前 2 行和当前行之间的行 - 两者都给出错误的结果当我将 sql 查询的结果与仅按日期分组的结果进行比较时)。
【问题讨论】:
【参考方案1】:您计算的是用户数,而不是不同的用户数。请改用COUNT(DISTINCT Visitors)
。
【讨论】:
在使用 over 时不能将 distinct 直接计入计数。这就是这篇文章的重点。我在上一步中创建了带有不同用户的子查询的临时表。 奇怪...docs中有一个例子以上是关于在使用子句时计数不同的主要内容,如果未能解决你的问题,请参考以下文章
使用 where 子句检索数据时,无论如何要检索计数 0 吗? (Laravel 雄辩)