[英]Count of distinct records - SQL
empid projectId TaskID
100 500 1
100 501 1
100 502 1
101 500 2
101 500 5
101 500 1
102 400 1
103 300 2
104 300 2
105 300 2
我試圖根據項目ID列出僅在多個項目上工作的員工。 我試過了distinct和GROUP BY。 但我無法准確地理解它。
從上表我期待這樣的結果
empid projectId
100 500
100 501
100 502
試試這個(修改后的代碼)
SELECT DISTINCT EmpId, ProjectId
FROM TableX
WHERE EmpId IN
(
SELECT EmpId
FROM TableX
GROUP BY EmpId
HAVING COUNT (DISTINCT ProjectId) > 1
)
這應該給你
EmpId ProjectId
----------- -----------
100 500
100 501
100 502
3 row(s)
在評論中編輯為OP附加問題添加的內容
給你一個計算項IDIds的計數意味着GROUP BY將處於EmpId
級別並且不需要子查詢
SELECT EmpId, Count (Distinct ProjectId) Projects
FROM TableX
GROUP BY EmpId
要獲得具有多個項目的所有員工的項目計數,請執行以下操作
SELECT EmpId, Count (Distinct ProjectId) Projects
FROM TableX
GROUP BY EmpId
Having Count (Distinct ProjectId) > 1
SELECT y.empid, y.projectId
FROM (SELECT empid
FROM YourTable
GROUP BY empid
HAVING COUNT(*) > 1) t
INNER JOIN YourTable y
ON t.empid = y.empid
ORDER BY y.empid, y.projectId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.