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
Run Code Online (Sandbox Code Playgroud)
我试图根据项目ID列出仅在多个项目上工作的员工.我试过了distinct和GROUP BY.但我无法准确地理解它.
从上表我期待这样的结果
empid projectId
100 500
100 501
100 502
Run Code Online (Sandbox Code Playgroud)
试试这个(修改后的代码)
SELECT DISTINCT EmpId, ProjectId
FROM TableX
WHERE EmpId IN
(
SELECT EmpId
FROM TableX
GROUP BY EmpId
HAVING COUNT (DISTINCT ProjectId) > 1
)
Run Code Online (Sandbox Code Playgroud)
这应该给你
EmpId ProjectId
----------- -----------
100 500
100 501
100 502
3 row(s)
Run Code Online (Sandbox Code Playgroud)
在评论中编辑为OP附加问题添加的内容
给你一个计算项IDIds的计数意味着GROUP BY将处于一个EmpId级别而不需要子查询
SELECT EmpId, Count (Distinct ProjectId) Projects
FROM TableX
GROUP BY EmpId
Run Code Online (Sandbox Code Playgroud)
要获得具有多个项目的所有员工的项目计数,请执行以下操作
SELECT EmpId, Count (Distinct ProjectId) Projects
FROM TableX
GROUP BY EmpId
Having Count (Distinct ProjectId) > 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43071 次 |
| 最近记录: |