微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何查询每个员工每年的累计工资

如何解决如何查询每个员工每年的累计工资

Query should return this output with cum sal

该表包含员工、月、年和薪水列。 我需要为此编写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 举报,一经查实,本站将立刻删除。