有两张桌子 1名员工 2薪水
Employee : eId, ename, salaryId
Salary : salaryId, eId, salary, date
工资表包含员工工资的月度记录,
喜欢:
1 2015-jan-01 10000
1 2015-feb-01 10000
1 2015-mar-01 10000
1 2014-jan-01 10000
1 2014-feb-01 10000
1 2014-mar-01 10000
2 2015-jan-01 10000
2 2015-feb-01 10000
2 2015-mar-01 10000
2 2014-jan-01 10000
2 2014-feb-01 10000
2 2014-mar-01 20000
所以查询是在特定年份为我提供最高薪的员工:2014年
所以这里使用group by和date输出的工资是:
empid - empname - sum(salary)
2 - xyz - 40000
答案 0 :(得分:1)
尝试使用类似的东西......我只是瞥了一眼指向正确的方向,这个查询可能需要一些修复
MaxPoolSize
祝你好运
答案 1 :(得分:0)
这样的事情可以起作用
with salaries as (
select to_char(date,'yyyy') y, eld, sum(salary) s_sal
from salary
group by to_char(date,'yyyy'), eld)
select eld
from salaries s
where s_sal = (select max(s_sal) from salaries where y=s.y)
and s.y='2014';
但是你没有指定DB,所以有Oracle语法。 而且我没有加入员工表,但相信加入它并不困难。
答案 2 :(得分:0)
如果要求是每年获得收入最高的员工名单,那么这可以通过“排名”逻辑来实现。
这样的事情:
SELECT
Year(SalaryMonthDate) AS [Payroll Year],
EID,
Sum(Amout) AS [Annual Salary],
RANK() OVER(PARTITION BY Year(SalaryMonthDate) ORDER BY Sum(Amout) DESC) [Rank]
FROM tblSalary
GROUP BY Year(SalaryMonthDate), EID
希望这有帮助。
答案 3 :(得分:0)
#highest paid emp in specific year
SELECT e.empId,e.empName,SUM(s.salary),s.salDate
FROM emp e INNER JOIN salary s ON e.empId = s.empId
WHERE YEAR(s.salDate)=2009 GROUP BY s.empId ORDER BY SUM(s.salary) DESC LIMIT 1;