利用SQL COUNT()函数统计符合特定条件的行数
SQL中的COUNT()聚合函数通常统计列中所有非空值。但是,如果您只想统计满足特定条件的行数呢?例如,只统计职位列中职位为“经理”的员工人数。
虽然WHERE子句为过滤行提供了直接的方法,但在需要同时统计经理和其他员工人数的情况下,WHERE子句可能不够用。这时,COUNT()聚合函数中的条件表达式就派上用场了。
在COUNT()中使用条件表达式
您可以利用COUNT()只统计非空值这一特性,而不是使用WHERE子句。通过使用条件表达式,您可以创建一个case语句,根据条件评估Position列并分配特定值。
示例1:使用Case和Count()
<code class="language-sql">select count(case Position when 'Manager' then 1 else null end) from ...</code>
在这个查询中,case语句评估Position列是否等于'Manager'。如果为真,则赋值为1;否则,赋值为null。然后,COUNT()聚合函数对case表达式中的所有非空值求和,从而得到经理行数。
示例2:使用Case和Sum()
或者,您可以使用Sum()聚合函数和类似的条件表达式:
<code class="language-sql">select sum(case Position when 'Manager' then 1 else 0 end) from ...</code>
这种方法也能得到经理行数,因为Sum()聚合函数对case表达式中指定的值求和,并有效地统计非零值(即Position等于'Manager'的行)。
以上是如何使用 COUNT() 计算 SQL 中满足特定条件的行数?的详细内容。更多信息请关注PHP中文网其他相关文章!