2016-04-20 27 views
-1

在Oracle SQL我怎麼能列出一對在同一部門工作的員工......我的員工表如下的員工:列表對在同一個部門工作

employeeid department 
    101  2 
    102  2 
    103  3 
    104  3 
    105  4 
+0

你要什麼的輸出是什麼樣子? http://stackoverflow.com/help/how-to-ask –

+0

請下次做你的工作,然後來診斷你的問題。 SO不是代碼寫入服務。 – Dresden

+0

也許它不是你的問題,但作爲我的初學SQL技術的技能,所以請如果你不想幫助退出! –

回答

1

你可以在部門的所有員工通過

SELECT * FROM employees 
WHERE department IN 
(
    SELECT department 
    FROM employees 
    GROUP BY department 
    HAVING COUNT(*) > 1 
) 

有多個僱員或使用LISTAGG顯示的ID列表中:

SELECT 
    department, 
    LISTAGG(employeeid, ', ') AS EmployeeList 
    FROM employees 
    GROUP BY department 
    HAVING COUNT(*) > 1 
+0

這些「解決方案」如何與列出「在同一部門工作的員工對」相關? – mathguy

+0

@mathguy我沒有像你那樣從字面上看「對」。當然,你的自我加入答案是一個可能的解決方案,但是如果一個部門的人數超過2人,你將在每個部門獲得每對「組合」的組合,這可能不是OP要找的。 –

0

如果你的表被稱爲T,你可以在「名單」的員工誰在同一部門一起工作對自連接,像這樣:

select t1.employeeid as employee1, t2.employeeid as employee2, department 
from t t1 join t t2 using (department) 
where t1.employeeid < t2.employeeid 

公平的警告:對部門有大量的員工,對的數量漸近地增長,就像該部門僱員數量的平方的1/2倍,因此您可能會在「真實」輸入表中獲得大量的行。

如果需要的話,可以將結果排序需要,例如加入這一行:

order by department, employee1, employee2 
相關問題