0

我有员工、经理、complincetype 表,我想计算有多少员工接受了什么样的 compliencetype.compliancetype 表由以下列组成,即 bcoe、eud、leave、building、parking 所以在每个经理中可以有 2 个或更多接受 bcoe 的员工,那么该经理在 bcoe 中的百分比取决于该经理下有多少员工。我已设法加入经理和员工表,以便我可以看到谁向哪个经理报告,所以我需要 sql 代码来加入所有表并计算 percenatge.in compliancetype 表我在每个 compliencetype 下都有“y”作为数据,以表明此类员工接受 complience.i 在 complience 表上也有 emp_id 列以识别员工。

表列如下:manager table:manager_id as PK,name as char,lname as char employee table:emp_id as PK,emp_name,emp_surname,manager_id compliencetype table:bcoe,eud,leave,building,parking,emp_id

我在 oracle apex 上运行此报告

4

1 回答 1

0

没有实际数据进行测试,我在这里猜测了一下,但可能是这样的:

select c.cmanager_id,c.cmanager_name,bcoe,e.emp_id,e.emp_name,e.emp_lname 
, pct = 100 * SUM(CASE bcoe WHEN 'Y' THEN 1.0 ELSE 0.0 END)OVER(PARTITION BY c.cmanager_id)
  / SUM(1.0)OVER(PARTITION BY c.cmanager_id)
from cemployees e 
join cmanager c on c.cmanager_id = e.cmanager_id 
join compliancetype t on e.emp_id = t.emp_id 

我对百分比公式的实际测试查询:

SELECT DISTINCT c.cmanager_id
, pct = 100 * SUM(CASE bcoe WHEN 'Y' THEN 1.0 ELSE 0.0 END)OVER(PARTITION BY c.cmanager_id) / SUM(1.0)OVER(PARTITION BY c.cmanager_id)
FROM (VALUES(1,'Y',8),(2,'Y',8),(3,'N',8),(4,'Y',9),(5,'N',9)) c(emp_id,bcoe,cmanager_id)

结果:

cmanager_id pct
----------- ---------------------------------------
8           66.666666
9           50.000000
于 2012-06-20T18:13:35.550 回答