如何获取分组行数的平均值

问题描述 投票:0回答:1

在单个表中,我尝试对列上的记录进行分组,计算每组中的总结果,然后获取计数的平均值:

选择 AVG(cnt) FROM
   (选择 COUNT(*) AS 'cnt'
   来自鸟类
   按birdID分组
);

所以表格可能看起来像:

鸟ID
------
罗宾
罗宾
罗宾
蓝松鸦
蓝松鸦
蓝松鸦
鹘

每项的计数:

罗宾 - 3
冠蓝鸦 - 3
猎鹰 - 1

总体平均值为 3 + 3 + 1 = 7 / 3(总组数)= 2.3

我的嵌套查询工作正常。但似乎可以通过一个查询来完成,而不是两个。

AVG(COUNT(*)) 不起作用,尽管这正是我想要达到的目的。

使用 AVG(COUNT(*)) 时,Sql 返回错误“滥用聚合函数 COUNT()”

sql sqlite
1个回答
0
投票

这应该可以完成工作...

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

© www.soinside.com 2019 - 2024. All rights reserved.