我想找出满足特定条件但包括零的次数(每个经理手下有多少名特定名称的员工).

表:

ID name manager_ID
1 John 1
2 John 1
3 Jane 2
4 John 3

结果应该是:

manager_ID count
1 2
2 0
3 1

使用WHERE不返回0值:

SELECT manager_id, COUNT(*)
FROM employees
WHERE name = 'John'
GROUP BY manager_id

推荐答案

买一百个吧.请使用CASEexpressionconditional aggregation.

SELECT manager_id,
       sum(case when name = 'John' then 1 else 0 end)
FROM employees
GROUP BY manager_id;

Sql相关问答推荐

查询将查找将标记设置为user2的用户

对非RUST源代码字符串使用`stringify!`,例如SQL查询

如何根据给定条件PostgreSQL迭代减少组中的行数

如何从JSON数组中 Select 多个值

如何计算一个用户S的日常连胜?

SQL:如何在表中同时使用GROUPING和CONDITION?

使用generate_series()时,LEFT联接缺少日期/间隔

MS Access问题查询中的自定义字段

根据时间、状态和相关行在PostgreSQL中的存在来删除行

在Power Bi中将SQL代码转换为DAX

PostgreSQL中递归CTE查询的故障过滤

GRAFANA 数据库查询错误:pq:列名称不存在

SQL Select 字母范围没有给我任何东西

SQL Server中使用min()和max()从选定的特定值id表中删除不必要的时间

验证某个日期前后的连续代码

SQL Server - 判断 ids 层次 struct 中的整数 (id)

try 将多行折叠为单个结果

Athena:从字符串birth_dt列计算年龄

如何跨行合并以删除 SQL 中的空值?

如何在 Oracle 中获取此变量的值?