我正在尝试发出以下查询:
SELECT
AVG(`count`)
FROM
(SELECT
COUNT(s_id) AS `count`
FROM
instructor,
advisor
WHERE instructor.ID = advisor.i_id
AND dept_name = 'CIS'
GROUP BY dept_name) nested ;
计算计算值的平均值。但是,嵌套查询返回给我一个计数值= 2的行。该值2是与查询匹配的2行记录的结果。
现在,当我将平均函数应用于它时,我得到2.0000。但是预期答案是1.0000。
知道我如何能够获得预期的价值吗?
答案 0 :(得分:3)
这是您的查询:
SELECT AVG(`count`)
FROM (SELECT COUNT(s_id) AS `count`
FROM instructor join
advisor
on instructor.ID = advisor.i_id
WHERE dept_name = 'CIS'
GROUP BY dept_name
) nested
您正在选择一个部门名称,然后按此分组。 where
子句意味着您只获得一行。因此,平均值与计数相同。一件事的平均值就是事物的价值。
如果您想要所有部门的平均值,可以删除where
:
SELECT AVG(`count`)
FROM (SELECT COUNT(s_id) AS `count`
FROM instructor join
advisor
on instructor.ID = advisor.i_id
GROUP BY dept_name
) nested;
或者,您实际上不需要子查询:
SELECT count(*) / count(distinct dept_name)
FROM instructor join
advisor
on instructor.ID = advisor.i_id ;
答案 1 :(得分:0)
AVG(s_id)将计算平均s_id,因此如果两行的id为1和3,则结果为2.