如何使用组进行sql select查询?

时间:2011-11-07 09:38:25

标签: sql-server select sql

我有一张包含员工的表和一张有错误的表。在我的应用程序中,您可以为员工分配一些错误。所以,  员工A将分配Error1(类型1),Error2(类型1)和Error3(type2) 员工B将分配Error3(type2) 和 员工C将分配Error4(type2),Error5(type2)。 希望你理解逻辑。

现在: 我需要做一个选择,它将获得严格分配类型2错误的员工的数量(例如)。 我的案例将返回:2(是员工B,员工C)

你是如何建议的? 我正在考虑选择哪里有员工姓名,分配的错误总数和分配的总错误是type2,但我不知道如何做到:|

任何帮助将不胜感激。

1 个答案:

答案 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