我在网站上有一个用户操作的 SQLite 表。每一行都是网站上的相同操作,只是时间/日期不同,并用用户 ID 标记。该表有超过 2000 万条条目。我了解如何使用按用户 ID 进行分组的功能来获取用户计数(即 A 执行了 3 次操作,B 4 次,C 2 次,D 4 次等)。换句话说,这工作得很好:
select count(uid) as event_count
from table
group by uid
我想要的是统计分布的数据,即仅执行 1 次操作的用户数量、执行 2 次操作的用户数量等。换句话说:该列表可能类似于:
1 | 339,440
2 | 452,555
3 | 99,239
5 | 20,209
etc. ...
我可以使用having event_count = n
子句并重新运行每个整数的查询,直到所有整数都被考虑在内,但这看起来很愚蠢。必须有一种方法可以让我获得包含两列的单个列表:组大小和所有执行完全相同操作次数的用户的数量。
就像在上面添加另一个分组一样简单:
select event_count, count(*) as users_count
from
(select count(uid) as event_count
from table
group by uid) t
group by event_count
order by event_count
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)