单独平均计数独特日期

时间:2014-06-25 14:24:57

标签: mysql date count average

我试图找出用户进入办公室的平均次数。对于上任的独特用户,我有类似于下面的场景。我的数据库每次用户到办公室时都有数据。

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

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

谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

所以你想要每人每天的平均入场次数......是吗?换句话说,总条目数除以进行这些条目的总人数,对吗?

=#entries /#人员进行这些参赛

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

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

计数(*)将显示每天的条目数。如果您的表格包含"条目"以外的任何内容。动作,你需要添加一个where子句,说明WHERE action =" Enter。"但除此之外,我们只需要输入总条目数,除以制作这些条目的不同人数,按日期汇总,然后按ASC顺序排序。

答案 1 :(得分:1)

我认为这就是你想要的,至少是你想要的结果:

   
SELECT date1, AVG(sub.count1)
FROM (
SELECT COUNT(*) AS count1, Date AS date1, user  FROM table1
GROUP BY date1, user
) AS sub
GROUP BY date1