薪资(department_id,employee_id,salary(
DepartmentID EmployeeID Salary
1 1 $30,000.00
1 2 $25,000.00
1 3 $40,000.00
1 4 $33,000.00
2 5 $25,000.00
2 6 $50,000.00
这可能适用于
select s1.employeeid, s1.departmentid, s1.salary
from salary as s1
inner join
(select departmentid, avg(salary) as avgsalary
from salary
group by departmentid) as s2
on s1.departmentid = s2.departmentid
where salary > avgsalary and salary > 30000
;
尝试此查询:
;WITH CTE AS
(
SELECT DepartmentID, AVG(salary) AverageSalary FROM Salary
GROUP BY DepartmentID
)
SELECT s.EmployeeID, s.DepartmentID, s.Salary, c.AverageSalary
FROM Salary s
INNER JOIN CTE c on c.DepartmentID = s.DepartmentID
WHERE s.salary > c.AverageSalary and s.salary > 30000
您可以使用以下查询
SELECT t1.DepartmentID,t2.EmployeeID,t2.Salary,t1.average
FROM
(SELECT DepartmentID,AVG(Cast(Salary as Float)) as average
FROM Test
GROUP BY DepartmentID) t1
JOIN Test t2 ON t1.DepartmentID = t2.DepartmentID AND t2.Salary > t1.average AND t2.Salary > 30
结果:dbfiddle