[英]How to count the number of individual users in a table per day?
我有一个日志表,其中列出了系统的各种操作,包括用户登录名。 我想找出每天有多少唯一身份用户登录。
我在这里尝试过:
SELECT date, count(username)
FROM universal_log
WHERE (plugin,action)
IN (('system','login'))
GROUP BY date
ORDER BY date
但是,这给了我登录的人数,还计算了每个用户的所有多次登录。 我认为这是因为我没有按用户名分组。 但是,如果我在这里这样做:
SELECT date, count(username)
FROM universal_log
WHERE (plugin,action)
IN (('system','login'))
GROUP BY date, username
ORDER BY date
我得到一个表,其中每个日期有多个条目,而不是一个条目,其中包含每个用户在这一天中登录的频率。
无论他每天登录的频率如何,我每天如何为每个用户获得+1的计数?
当将COUNT(DISTINCT username)
应用于第一个查询时,应该可以解决您的重复项。 您仅对GROUP BY date
是正确的,但是只需要对username
值进行重复数据删除即可。
SELECT
date,
count(DISTINCT username)
FROM universal_log
WHERE (plugin,action)
IN (('system','login'))
GROUP BY date
ORDER BY date
在第二次尝试中将username
添加到GROUP BY
时,其效果是每个date
每个username
应用COUNT()
,这在语义上与您想要的不同。 对于添加到GROUP BY
每一列,您的聚合最终将产生更多的行(应用于更广泛的数据集),或者在某些情况下产生相同的行(如果值以不同的开头)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.