如何每天获取平均行数?

时间:2014-07-17 09:04:07

标签: mysql average

我有一张桌子

id | created
---------------
 1 | 2014-07-01
 2 | 2014-07-01
 3 | 2014-07-01
 4 | 2014-07-01
 5 | 2014-07-02
 6 | 2014-07-03
 7 | 2014-07-04
 8 | 2014-07-05
 9 | 2014-07-05
10 | 2014-07-05

我想获取每天的平均行数。所以如果它是

2014-07-01: 4 rows
2014-07-02: 1 row
2014-07-03: 1 row
2014-07-04: 1 row
2014-07-05: 3 rows

平均值

sum 4 + 1 + 1 + 1 + 3 = 10 items
10 items / 5 days = 2 items/day

我的SQL查询是

SELECT AVG(COUNT(*))
FROM `mytable`
GROUP BY `created`

但是我收到了这个错误

#1111 - Invalid use of group function

如何修改查询以获得正确的结果?

3 个答案:

答案 0 :(得分:4)

您需要将其放在子查询中。

SELECT AVG(my_count) FROM (
SELECT COUNT(*) as my_count
FROM
your_table
GROUP BY created
) sq

答案 1 :(得分:3)

你也可以在没有子查询的情况下做到这一点。它更胖。

SELECT COUNT(*)/COUNT(DISTINCT `created`) FROM `mytable`;

以下是示例链接:http://sqlfiddle.com/#!2/2c284df/2

答案 2 :(得分:1)

有一个子查询来获取每天的计数,然后用它来获得平均值: -

SELECT AVG(day_count)
FROM 
(
    SELECT COUNT(*) AS day_count
    FROM `mytable`
    GROUP BY `created`
) sub0