选择经理的高薪员工的薪水

时间:2014-10-31 05:13:14

标签: sql linq

我有这张桌子:

CREATE TABLE EMP ( 
EmpNo INT IDENTITY(1,1) PRIMARY KEY, 
Ename NVARCHAR(350), 
JOB NVARCHAR(100), 
Mgr INT, HireDate DATETIME, 
Sal INT, 
Comm INT, 
DeptNo INT ) 

我想选择经理高薪雇员的薪水。

这是我的代码:

from a in EMPs
where ((from b in EMPs where b.Mgr != null 
select  b.Sal + (b.Comm != null ? b.Comm :0))) > (select c in EMPs where c.Mgr == null 
select  b.Sal +(b.Comm != null ? b.Comm :0))
select a.Ename

请!帮助我。

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找所有在每位经理下获得最高工资的员工。如果是这种情况,请尝试: -

var query = employees.GroupBy(x => x.ManagerName)
                                 .Select(x => new { ManagerName = x.Key,EmployeeName = x.OrderByDescending(z => z.Salary + (z.Comm ?? 0)).First().EmpName });

第1步:按管理员名称分组 第2步:选择ManagerName(分组后将为Key),从每个组中按降序排序并选择第一个员工来获取收入最高的员工。

我使用过这种类型: -

public class Employee
    {
        public int EmpID { get; set; }
        public string EmpName { get; set; }
        public string ManagerName { get; set; }
        public decimal Salary { get; set; }
        public int? Comm { get; set; }
    }

Fiddle