繁体   English   中英

如何计算每天一个表中的个人用户数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM