2015-04-01 41 views
0

我想創建一個比較兩組數據的報告。一個是培訓表,列出我們已經培訓的人員。另一個是列出參與項目的項目表。如何合併2個組合表,然後添加一個比較它們的列?

我想按部門對受訓人員和參與者進行分組,以便知道哪些部門在培訓後未參加。

我寫了下面的兩個語句按部門給我看學員和particpants的計數數量:

顯示按部門計算的參與者:

SELECT emp.DEPT_MANUAL, COUNT(pt.SSO) AS PARTIC 
FROM PROJECTTEAM pt, EMPLOYEES emp 
WHERE emp.SSO = pt.sso GROUP BY emp.DEPT_MANUAL 
ORDER BY emp.DEPT_MANUAL DESC 

顯示按部門計算的學員:

SELECT emp.DEPT_MANUAL, COUNT(train.SSO) AS TRAINED 
FROM TRAININGROSTER train, EMPLOYEES emp 
WHERE emp.SSO = train.sso GROUP BY emp.DEPT_MANUAL 
ORDER BY emp.DEPT_MANUAL DESC 

關於這兩個表的一些信息。

兩個PROJECTTEAM & TRAININGROSTER都通過SSO鏈接到EMPLOYEES表。 EMPLOYEES表有一個字段DEPT_MANUAL。 並非TRAININGROSTER中的每個SSO都在PROJECTTEAM中(他們將繼續) 並非每個PROJECTTEAM中的SSO在EMPLOYEES表中都有關聯的DEPT_MANUAL。

我想結合這兩個select語句,然後添加另一列,將計數除以給出%。它應該看起來像這樣: enter image description here

如何組合列出的選擇,然後添加第4列顯示劃分參與者的訓練?

謝謝!

+0

你關心事件ID嗎? – 2015-04-01 15:27:57

+0

不,我只是添加了這些來顯示一個人可以在任一表中多次。但我真的只關心他們一次代表 – JaReg 2015-04-01 15:28:45

回答

1

以下是一種可能的方法。你如何做到這一點是由你正在使用的數據庫有限,但在這裏是如何它可能看起來在甲骨文

SELECT DISTINCT a.DEPT_MANUAL, a.PARTIC_COUNT, a.TRAIN_COUNT, a.TRAIN_COUNT/a.PARTIC_COUNT AS PCT 
FROM (
SELECT emp.DEPT_MANUAL, 
    (SELECT COUNT(pt.SSO), 
    FROM PROJECTTEAM pt, EMPLOYEES emp_partic 
    WHERE emp_partic.SSO = pt.sso 
    AND emp_partic.DEPT_MANUAL = emp.DEPT_MANUAL) as partic_count, 
    (SELECT COUNT(train.SSO) 
    FROM TRAININGROSTER train, EMPLOYEES emp_train 
    WHERE emp_train.SSO = train.sso 
    AND emp_train.DEPT_MANUAL = emp.DEPT_MANUAL) as train_count 
FROM EMPLOYEES emp 
) a 

凡在另一個數據庫,例如SQL Anywhere的,它可能不需要僞表(oracle版本中的「a」),如下所示:

SELECT DISTINCT emp.DEPT_MANUAL, 
    (SELECT COUNT(pt.SSO), 
    FROM PROJECTTEAM pt, EMPLOYEES emp_partic 
    WHERE emp_partic.SSO = pt.sso 
    AND emp_partic.DEPT_MANUAL = emp.DEPT_MANUAL) as partic_count, 
    (SELECT COUNT(train.SSO) 
    FROM TRAININGROSTER train, EMPLOYEES emp_train 
    WHERE emp_train.SSO = train.sso 
    AND emp_train.DEPT_MANAUL = emp.DEPT_MANUAL) as train_count, 
    train_count/partic_count AS PCT 
FROM EMPLOYEES emp 
+0

這工作!我做了一些調整,如分開參加訓練,但代碼的工作正是我需要的。感謝Jim – JaReg 2015-04-01 17:27:20

+0

很高興爲你效勞。我在那裏添加了DISTINCT,以便讓部門的每個員工重複一次。 – Jim 2015-04-01 22:21:51

相關問題