在Oracle SQL我怎麼能列出一對在同一部門工作的員工......我的員工表如下的員工:列表對在同一個部門工作
employeeid department
101 2
102 2
103 3
104 3
105 4
在Oracle SQL我怎麼能列出一對在同一部門工作的員工......我的員工表如下的員工:列表對在同一個部門工作
employeeid department
101 2
102 2
103 3
104 3
105 4
你可以在部門的所有員工通過
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
這些「解決方案」如何與列出「在同一部門工作的員工對」相關? – mathguy
@mathguy我沒有像你那樣從字面上看「對」。當然,你的自我加入答案是一個可能的解決方案,但是如果一個部門的人數超過2人,你將在每個部門獲得每對「組合」的組合,這可能不是OP要找的。 –
如果你的表被稱爲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
你要什麼的輸出是什麼樣子? http://stackoverflow.com/help/how-to-ask –
請下次做你的工作,然後來診斷你的問題。 SO不是代碼寫入服務。 – Dresden
也許它不是你的問題,但作爲我的初學SQL技術的技能,所以請如果你不想幫助退出! –