0

私はemployee、manager、complincetypeテーブルを持っており、どのようなcompliencetype.compliancetypeテーブルを受け入れた従業員数を計算しますbcoeを受け入れる従業員、そのマネージャーの下にいる従業員の数に応じて、bcoeでのそのマネージャーの割合はどうなりますか?表を作成して percenatge.in ComplianceType テーブルを計算します。各コンプライアンス タイプの下にデータとして「y」があり、従業員がコンプライアンスを受け入れたことを示します。コンプライアンス テーブルには、従業員を識別するための emp_id 列もあります。

表の列は次のとおりです:manager 表:manager_id は PK、名前は char、lname は char 従業員表:emp_id は PK、emp_name、emp_surname、manager_id 準拠タイプ表:bcoe、eud、leave、build、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 に答える