如果我正在运行工资单报告,我有正常的员工,其薪酬分为两个不同的部门。所以基本上,一个员工的工资成本将分配给我的报告50%,因为我不算其他50%(这些工资成本计入其他部门)
然而,导演监督(例如)8个团队,因此她的工资成本按报告分配12.5%。
对于报告,我向员工添加了50%的费用,但我不知道如何在同一列中同时添加Director 12.5%的费用。我的代码是这样的,但我想知道如何调整它以便得到我需要的东西:
select
to_char("Date", 'YYYY') as "Date",
case
when "Type" in ('E001', 'E002', 'E003', 'E004') then 0.5 * sum ("Amount") filter (where "Type" in ('E001', 'E002', 'E003', 'E004'))
when "Type" like 'E9%' then 0.125 * sum("Amount") filter (where "Type" like 'E9%')
end as "Salaries Shared with Accounting"
from "Transactions"
group by 1
order by min("Date");
正如您所看到的,这将为每位员工返回50%的工资单,但我无法将其输出为E001,E002,E003和E004的50%,并且还会增加12.5%的E999。
答案 0 :(得分:1)
看起来数据模型不是为处理这个特定的用例而设计的,但使用条件查询有一个相当不愉快的解决方案:
select
to_char("Date", 'YYYY') as "Date",
case
when "Type" in ('E001', 'E002', 'E003', 'E004') then 0.5 * sum ("Ammount") filter (where "Type" in ('E001', 'E002', 'E003', 'E004')
when "Type" like 'E9%' then 0.125 * sum("Ammount") filter (where "Type" like 'E9%'
end as "Salaries Shared with Accounting"
然而,可能有一个更令人满意的解决方案涉及 window 功能。我相信可以完全自动化上面的计算,而不是每次有人获得额外的项目时更改查询。