mysql - 使用 MySQL 为交叉表提取第二个值

标签 mysql conditional-operator

我有以下查询...

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/

相关文章:

php - 如何舍入表输出中的 mysql 列

javascript - Node js中的三元函数返回Nan

python - Python有三元条件运算符吗?

php - 如何使用行数据用 PHP 解析 MySQL 表的结果?

mysql - UTF8 数据库文本无法在 cakephp3 上运行

php - fatal error : Call to undefined function bindParam()

php - 如何根据值显示多个表格

java - 为什么三元运算符会意外地转换整数?

javascript - 在条件运算符内赋值

c++ - 条件运算符奇怪的输出