用于获取员工姓名和平均工资的SQL查询

时间:2016-06-01 18:26:05

标签: sql sql-server

对于列EmployeeEmpIdName的{​​{1}}表,是否可以编写SQL查询,以便结果包含每个员工的数据姓名和所有员工的平均工资?

示例数据

Salary

我需要一个可以返回此结果的查询:

结果

EmpId      Name       Salary 
 1         Alice       12000
 2         Bob         12000 
 3         Charlie     10000 
 4         Doug         6000 

这里10000是所有4名员工的平均工资。

4 个答案:

答案 0 :(得分:3)

您可以使用窗口函数,但SELECT中的子查询应该更快:

SELECT name, avg(salary) OVER () as avgSal FROM SampleData;

答案 1 :(得分:2)

因此,您只需获得所有工资的平均值以及每位员工的名单。你不必每次都计算它,这实际上是浪费,但你可以这样做:

SELECT Name, (SELECT AVG(Salary) FROM SampleData) AS AvgSalary
FROM SampleData

否则,你可以获得一次平均工资:

DECLARE @AVGSALARY float
SET @AVGSALARY = (SELECT AVG(Salary) FROM SampleData)

SELECT Name, @AvgSalary AS AvgSalary
FROM SampleData

答案 2 :(得分:0)

select distinct name, average from sampledata
 cross join
(select avg(salary) average from sampledata) a1

答案 3 :(得分:0)

h2:after {
   content: '';
  position: relative;
  max-width: 100px;
  display: block;
  height: 4px;
  background: #0073ae;
}