sql - sql:至少计算一个
问题描述
给定两个表 Employee 和 Task,我试图找出为每种类型的员工分配了至少一项任务的员工数量。
[Employee]
Id employeeType
--------------------
111 developer
222 developer
333 designer
444 designer
555 owner
[Task]
Type assignedEmployeeId
--------------------
A 111
B 222
C 333
D 111
<Desired Output>
employeeType numEmp
--------------------
developer 2 <- developer with id 111 has two task assigned and 222 has 1 task
designer 1
owner 0
我尝试了以下方法:
SELECT Employee.id
FROM Employee LEFT OUTER JOIN Task
ON Employee.id = Task.assignedEmployeeid
GROUP BY Employee.id
HAVING COUNT (Employee.id) >= 1
解决方案
Since you want to calculate type wise employee count you need to group by emloyeetype. And you want to count emloyeeid only if It's in task table. so count will be on task.assignedemployeeid.
select employeetype,count(distinct task.assignedemployeeid) numemp
from employee left join task on assignedemployeeid=id
group by employeetype
Output:
推荐阅读
- facebook - 从 fb.watch 别名获取 Facebook 视频 ID
- java - Java.lang.RuntimeException:在注册表中找不到应用程序“org.eclipse.test.coretestapplication”
- node.js - 使用 exceljs 并在解析大型 excel 文件时遇到内存泄漏
- javascript - ServiceNow 中的 JavaScript
- python-3.x - 来自 psycopg2 的 ExecuteMany 函数出错
- python - 如何根据具有重复值的列对熊猫中的值进行排序
- python - Selenium Python 单击没有 ID 的按钮
- python - Python 3、concurrent.futures.ProcessPoolExecutor 和 CEF 在达到池大小后崩溃
- debian - E: 软件包 'oracle-java8-installer' 在 Debian 上没有安装候选
- html - 拖动时如何更改书签名称