我有一张桌子
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
如何修改查询以获得正确的结果?
答案 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`;
答案 2 :(得分:1)
有一个子查询来获取每天的计数,然后用它来获得平均值: -
SELECT AVG(day_count)
FROM
(
SELECT COUNT(*) AS day_count
FROM `mytable`
GROUP BY `created`
) sub0