mysql - 分别计算唯一日期的平均计数

标签 mysql date count average

我试图找出用户进入办公室的平均次数。对于上任的唯一用户,我有一个与下面的场景类似的场景。我的数据库包含用户每次来办公室的数据。

请注意:每个人都有不同的名字,因为我使用的不是他们的名字而是某种 ID。

Date         Person   Action
01-01-2014   John     Enter
01-01-2014   lilly    Enter
01-01-2014   lilly    Enter
01-01-2014   bill     Enter
01-02-2014   bill     Enter
01-02-2014   lilly    Enter
01-02-2014   bill     Enter
01-02-2014   John     Enter
01-02-2014   John     Enter

我可以通过将用户分组在一起并根据计数运行平均值来执行查询以提供平均值,但只有在查询中指定日期时它才有效。我正在尝试进行查询,分别计算每个日期的平均值,然后给出每个日期的平均值。

SELECT AVG(sub.count1)
FROM (
SELECT COUNT(*) AS count1, Date AS date1, user  FROM table1 WHERE         
date='01-01-2014' GROUP BY user
) AS sub

我想要的结果

Date         Avgcount
01-01-2014   1.33
01-02-2014   1.667

谢谢你的帮助。

最佳答案

所以您想要每人每天的平均条目数……是吗?换句话说,条目总数除以参与这些条目的总人数,对吧?

= # 条目/# 制作这些条目的人

是吗?

如果是这样,以下应该可以解决问题:

SELECT COUNT(*)/COUNT(DISTINCT person) 
FROM table1
GROUP BY date
ORDER BY date ASC;

count(*) 会显示每天的条目数。如果您的表包含除“Entry”操作之外的任何内容,您需要添加一个 where 子句,说明 WHERE action =“Enter”。但除此之外,我们只取条目总数,除以创建这些条目的不同人数,按日期汇总,并按 ASC 顺序排列。

关于mysql - 分别计算唯一日期的平均计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411322/

相关文章:

php - MySQL 列值到数组。结果是错误的值

java - 如何在 SimpleDateFormat 中禁用零填充宽大处理

regex - R中位置序列的长度(以字符串形式给出)

php - 获取 15 至 30 分钟前的数据

r - 在组内计算值变化前后的数量,为每个独特的转变生成新变量

Mysql 多个计数列,每个列都有单独的条件

mysql - 查询返回额外的行

mysql - 如何从 MySQL 中的逗号分隔字符串值计算中位数?

mysql - EXPLAIN 显示 "DEPENDENT SUBQUERY"并且从 MariaDB 迁移到 MySQL 后非常慢

mysql - 如何替换列中的日期年份