我有以下查询...
SELECT COUNT(Department) as DeptCount, Survey.Department, Department.DepartmentName
FROM Survey JOIN Department ON Survey.Department = Department.DeptID
Where SurveyCompleted is not null GROUP BY DEPARTMENT ORDER BY Department;
唯一的问题是我计算的“部门”字段并不总是输入值(出于各种原因)。我可以使用另一个字段 Employee.DepartmentId,但我不确定如果我使用内联 IF 或类似结构如何创建相同的效果。
基本上我希望看到的输出是:
DeptCount Department DepartmentName
43 2 Department1
68 9 Department2
83 13 Department3
现在我得到一个额外的行作为第一个结果
DeptCount Department DepartmentName
93 0 <blank>
43 2 Department1
68 9 Department2
83 13 Department3
如有任何帮助,我们将不胜感激。
谢谢。
最佳答案
如果你尝试这个会发生什么?通过使连接成为左连接,我们从 Survey
中获取所有记录,并从 Department
中获取所有匹配记录。然后我们可以聚合它们。
SELECT COUNT(Department) as DeptCount, coalesce(Survey.Department, 0)
, Department.DepartmentName
FROM Survey
left JOIN Department ON Survey.Department = Department.DeptID
Where SurveyCompleted is not null
GROUP BY DEPARTMENT ORDER BY Department;
顺便说一下,group by
会自动排序,因此如果您要分组,则不需要order by
。
关于mysql - 使用 MySQL 为交叉表提取第二个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40850884/