我正在努力处理SQL查询。
我想要完成的任务是计算5天内使用该应用的用户数,4天内有多少用户等。
我想要一张这样的桌子:
days | user_count
---- | ---
5 | 2
4 | 2
2 | 1
1 | 1
我所拥有的是包含events,event_date和user_id的日志文件。所以我设法查询的是:
SELECT
user_id,
COUNT(DISTINCT event_date) AS days
FROM
mytable
GROUP BY user_id
这是结果表。
user_id | days
------- | ----
a | 5
b | 5
c | 4
d | 4
e | 2
f | 1
但是我需要一个如上所示的表(days,user_count)
问题:如何通过一个查询获得结果?
我希望我能在几天后再拿出结果再分组。但是这在一个查询中不起作用(我的原因不能使用带有累积列的ORDER BY)。
我正在使用Google BigQuery的WebUI,看起来临时表并不容易。所以我考虑组合两个查询,但我的SQL技能有限。阅读关于UNION,WHERE IN或子查询的相关查询并没有给我带来任何进一步的信息。
感谢任何帮助: - )
答案 0 :(得分:1)
一种简单的方法是嵌套查询。 (创建一个内存表或内联视图但是你想要查看它)
SELECT count(User_ID) cnt, days
FROM (SELECT user_id
, COUNT(DISTINCT event_date) AS days
FROM mytable
GROUP BY user_id) z
GROUP BY days
ORDER BY Days Desc
参考:Does BigQuery support SubQueries?
我正在寻找是否有办法用一两个分析功能做到这一点,但到目前为止还没有运气。
答案 1 :(得分:0)
选择days,count(distinct(user))为user_count 来自mytable 按天分组;
答案 2 :(得分:0)
选择 天, exact_count_distinct(user)as user_count 从 表 小组@ 100 by 1 ;