如何解决如何查询每个员工每年的累计工资
该表包含员工、月、年和薪水列。 我需要为此编写SQL查询。 当我们到达 12 月并重新开始计算同一员工明年的营业额时,它应该会重置。
现在我设法写在 Query 下,但这还不够:
SELECT Employee,Month,Year,Salary,SUM(Salary) OVER(ORDER BY rownum) AS "CUM SALARY"
FROM emp
group by Employee,rownum;
解决方法
我不知道您使用的是哪个数据库,但这将适用于 Oracle 数据库
SELECT Employee,Month,Year,Salary,SUM(Salary) OVER(partition by Employee,Year ORDER BY to_date(Year||Month,'YYYYMon','nls_date_language = english')) AS "CUM SALARY"
FROM emp
;
,
您可以使用 sum 分析函数如下:
select t.*,sum(salary) over (partition by empployee,year
order by case month when 'Jan' then 1
when 'Feb' then 2
.....
when 'Dec' then 12
end) as cum_sal
from employee t
或者您可以使用 try_cast
如下:
select t.*,year
order by TRY_CAST (concat(month,' ',year)) as cum_sal
from employee t
,
示例查询
WITH CTE
AS(
SELECT
EmpName,Sal_Date,(ROW_NUMBER() over (PARTITION BY YEAR(Sal_Date) order by EmpName,Sal_Date asc) ) ROWNO
FROM tbl_EmpTB
GROUP BY EmpName,Salary
)
SELECT EmpName,Datename(MONTH,sal_date) [Month],YEAR(sal_date) [YEAR],--CUMSAL,SUM (Salary) OVER (PARTITION BY YEAR(Sal_Date) order by EmpName,Sal_Date asc) [CUM SALARY]
FROM CTE
ORDER BY Sal_Date
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。