Сначала вычислите среднее число emp_id
, используя переменную. У этого есть подзапрос, который вычисляет число за dname
, после чего основной запрос выполняет среднее значение по этому.
Вторая часть запроса - это информационная строка, сообщающая вам, какое среднее значение было получено. , Не требуется, если вы не хотите этого.
Третья часть снова запускает счет, но отфильтровывает dname
записей, которые не превышают переменную @avg_emps
, вычисленную в начале:
declare @avg_emps int = (
select
avg(emp_count) as avg_emp_count
from (
select
dname
,count(emp_id) as emp_count
from dbo.foo
group by dname
) as count_emps
)
select 'Average employees per department is: ' + cast(@avg_emps as varchar(10));
select
dname
from dbo.foo
group by dname
having count(emp_id) > @avg_emps;