我有一张包含员工的表和一张有错误的表。在我的应用程序中,您可以为员工分配一些错误。所以, 员工A将分配Error1(类型1),Error2(类型1)和Error3(type2) 员工B将分配Error3(type2) 和 员工C将分配Error4(type2),Error5(type2)。 希望你理解逻辑。
现在: 我需要做一个选择,它将获得严格分配类型2错误的员工的数量(例如)。 我的案例将返回:2(是员工B,员工C)
你是如何建议的? 我正在考虑选择哪里有员工姓名,分配的错误总数和分配的总错误是type2,但我不知道如何做到:|
任何帮助将不胜感激。
答案 0 :(得分:1)
使用子查询。
SELECT COUNT (id)
FROM employees
WHERE EXISTS (SELECT * FROM errors WHERE type = 2 AND employee_id = employees.id)
AND NOT EXISTS (SELECT * FROM errors WHERE type != 2 AND employee_id = employees.id)
对于您的员工姓名,错误总数和类型2错误数的查询,您可以这样做:
SELECT employees.name, count(error.id) all_errors, sum(case when error.type = 2 then 1 else 0 end) type_2_errors
FROM employees, errors
WHERE errors.employee_id = employees.id
GROUP BY employees.name