在单个表中,我尝试对列上的记录进行分组,计算每组中的总结果,然后获取计数的平均值:
选择 AVG(cnt) FROM (选择 COUNT(*) AS 'cnt' 来自鸟类 按birdID分组 );
所以表格可能看起来像:
鸟ID ------ 罗宾 罗宾 罗宾 蓝松鸦 蓝松鸦 蓝松鸦 鹘
每项的计数:
罗宾 - 3 冠蓝鸦 - 3 猎鹰 - 1
总体平均值为 3 + 3 + 1 = 7 / 3(总组数)= 2.3
我的嵌套查询工作正常。但似乎可以通过一个查询来完成,而不是两个。
AVG(COUNT(*)) 不起作用,尽管这正是我想要达到的目的。
使用 AVG(COUNT(*)) 时,Sql 返回错误“滥用聚合函数 COUNT()”
这应该可以完成工作...
SELECT ROUND(AVG(CNT), 2) AS "AVERAGE_COUNT_OF_IDS"
FROM (
SELECT BIRD_ID, COUNT(*) AS "CNT"
FROM tbl
GROUP BY BIRD_ID
);
/* R e s u l t :
AVERAGE_COUNT_OF_IDS
--------------------
2.33 */
...在这里看到它https://sqlfiddle.com/sqlite/online-compiler?id=9be29b9c-3f57-49c8-afaa-5aeb598e3bc2