postgresql - 同一列中的 Postgres 值分配

标签 postgresql

我正在运行薪资报告,但在查询和返回我需要的结果时遇到问题。在报告中,有两列,表格如下所示:

Date   | Costs
2014   | 100000
2015   | 150000

但是,诀窍在于,有两种员工的成本被添加到“成本”列中。一种员工是“普通”员工,他们的员工编号遵循模式“E00...”,如“E001、E002、E003 等”。

第二种是manager。他们的员工编号如“E99...”,所以“E990、E991 等”。

为了查询和返回成本列的数据,我目前为我的查询返回了 100% 的员工成本。但是,我想查询只返回50%的E00型员工加入成本列,只返回12.5%的E99型员工加入成本列。

这样,Cost 列将由添加 E00 员工成本的 50% 和添加 E99 员工成本的 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 "Costs"
 from "Transactions"
 group by 1
 order by min("Date");

最佳答案

为什么不是这样的呢?

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;

关于postgresql - 同一列中的 Postgres 值分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33218942/

相关文章:

postgresql - 如何使用 Node.js 中的 Lambda 函数从 Amazon RDS 获取数据?

ruby-on-rails - 根据投票数对列表进行排序

postgresql - Macaddr/Inet 类型的 postgres in slick

node.js - Sequelize JS 构建关联

postgresql - Postgres - jsonb : Update key in column with value taken from another table

django - 将 Postgres11 部署到 Elastic Beanstalk - Requires/etc/redhat-release

sql - PostgreSQL 存储过程(函数)的正确语法是什么?

java - Hibernate IN/ANY 与 Criteria 中的自定义转换器

python - Django ModelMultipleChoiceField 不显示正确的选择名称

sql - Postgres 获取电子邮件域的计数