2015-10-19 70 views
1

我正在運行工資報告,但無法查詢並返回我需要的結果。在報告中,有兩列,表看起來是這樣的:Postgres在同一列中的值分配

Date | Costs 
2014 | 100000 
2015 | 150000 

但訣竅是,有兩種類型的僱員,其成本被加入到費用列。一種員工是「正常」,他們的員工編號遵循「E00,E002,E003等」的模式。

第二種是經理。他們的員工編號如「E99 .. 「,所以」E990,E991等

爲查詢和返回成本列的數據,我目前回到我查詢的員工成本的100%。但是,我想查詢並僅返回50%的E00類型員工以添加到成本列中,並且只返回12.5%的E99類型員工以添加到成本列中。

通過這種方式,費用列將由增加E00員工成本的50%和增加12.5%的E99員工成本組成。

以下是我的查詢,但我不能讓它返回任何東西:

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 "Costs" 
from "Transactions" 
group by 1 
order by min("Date"); 

回答

1

爲什麼不類似的東西?

SELECT mydate, 
     SUM(mysum) 
FROM (
     (SELECT to_char("Date", 'YYYY') AS mydate, 
              0.5 * SUM("Amount") AS mysum 
     FROM "Transactions" 
     WHERE TYPE LIKE 'E00%' 
     GROUP BY 1) 
     UNION ALL 
     (SELECT to_char("Date", 'YYYY') AS mydate, 
              0.125 * SUM("Amount") 
     FROM "Transactions" 
     WHERE TYPE LIKE 'E9%' 
     GROUP BY 1)) s1 
GROUP BY mydate 
ORDER BY mydate; 
+0

如果我的表是「交易」,我在哪裏,從「交易把? – Piechartking

+0

@Piechartking對不起,忘了FROM子句。現在修正。 – Alexandros

+1

是啊,偉大的作品!謝謝! – Piechartking