【问题标题】:How to get the average for one column of data in sql server如何获取sql server中一列数据的平均值
【发布时间】:2013-10-29 04:09:44
【问题描述】:

我的目标是列出教育水平高于平均水平的员工

这就是我所拥有的

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

我猜我必须创建某种类型的子查询或分区?不知道该怎么做 谢谢!

【问题讨论】:

  • 使用“HAVING”子句过滤聚合。
  • @yswai1986 - 你能用Having展示一个样本吗?

标签: sql sql-server average


【解决方案1】:

试试这个:

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

【讨论】:

  • 无法对包含聚合或子查询的表达式执行聚合函数。
【解决方案2】:

试试这个:

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

【讨论】:

    【解决方案3】:

    这是平均函数的用法:

    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 的员工详细信息。

    【讨论】:

    • 谁问你AVG函数的语法?
    【解决方案4】:

    试试这个!!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多