对于列Employee
,EmpId
,Name
的{{1}}表,是否可以编写SQL查询,以便结果包含每个员工的数据姓名和所有员工的平均工资?
示例数据
Salary
我需要一个可以返回此结果的查询:
结果
EmpId Name Salary
1 Alice 12000
2 Bob 12000
3 Charlie 10000
4 Doug 6000
这里10000是所有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;
}