2013-10-29 58 views
-1

我的目标是具有比平均教育水平更高的员工名单如何获得的平均SQL Server中的数据的一列

这里是我有

Select [ED_LVL], 
    AVG (ED_LVL) as 'AVG ED_LVL' 
    From [Enterprise].[dbo].[Employee] 
    Group BY [ED_LVL] 

我猜我有使某种类型的子查询或分区?不知道该怎么办 谢谢!

+0

使用“HAVING”子句过滤aggr。 – yswai1986

+0

@ yswai1986 - 你可以用'Having'显示一个样本吗? –

回答

1

试试这个:

Select * 
From [Enterprise].[dbo].[Employee] 
WHERE ED_LVL > (Select AVG(ED_LVL) From [Enterprise].[dbo].[Employee]) 
+0

无法对包含聚合或子查询的表达式执行聚合函数。 –

+0

我已更新答案,现在就试试 –

1

这是功能如何均可以使用:

SELECT AVG(column_name) FROM table_name 

关于想问你,试试这个:

Select * FROM [Enterprise].[dbo].[Employee] 
WHERE [ED_LVL]>(SELECT AVG(ED_LVL) FROM [Enterprise].[dbo].[Employee]) 

其中给出员工详细谁家ED_LVL比一般ED_LVL更大。

+0

谁向你询问'AVG'函数的语法? –

1

试试这个:

select * 
from Employee t 
where t.ED_LVL > 
(
    select AVG(e.ED_LVL) [avg] 
    from Employee e 
) 
0

试试这个!

SELECT [ED_LVL], 
    FROM (
     SELECT 
     [ED_LVL], 
     AVG([ED_LVL]) OVER() AS avg_edu, 
     FROM [Enterprise].[dbo].[Employee] 
    ) s 
    WHERE [ED_LVL]> avg_edu