我目前正在做一个作业,要求我找到每个模块的资源数量的平均值。当前表格如下所示:
ResourceID ModulID
1 1
2 7
3 2
4 4
5 1
6 1
字符串
所以基本上,我试图找出如何获得平均资源数。这里唯一相关的测试数据是模块1,它有3个不同的资源连接到它。但我需要显示所有的结果。
这是我的代码:
select avg(a.ress) GjSnitt, modulID
from
(select count(ressursID) as ress
from ressursertiloppgave
group by modulID) as a, ressursertiloppgave r
group by modulID;
型
很明显,这是行不通的,但我目前在亏损什么改变在这一点上。我真的很感激任何输入你们有。
3条答案
按热度按时间carvr3hs1#
这是您正在执行的查询,它是用稍微不那么迟钝的语法编写的。
字符串
您正在交叉连接表,总共生成(6x6=)36行,并将其压缩为4行,但由于总计数为36,因此结果是错误的。
这就是为什么永远不要使用隐式联接的原因。
将查询重写为:
型
如果你想要单独的行数和,底部的平均值是:
型
ycl3bljg2#
我有办法了
SELECT AVG(counter)FROM(SELECT AVG(column to count)AS counter FROM table)AS counter
请注意,昵称{counter}已添加到SELECT语句中,并添加到内部SELECT语句的末尾
iaqfqrcu3#
你也可以将值的个数(7)除以 distinct 值的个数(4):
字符串