SQL的Count if
https://modern-sql.com/excel/countif-in-sql
微软 Excel 功能计算满足条件的单元格:countif
Excel: =COUNTIF(<source>, <condition>)
- 1
在 SQL 中,使用函数内的案例
表达方式可以获得相同的行为:count
SQL: COUNT(CASE WHEN <condition> THEN 1 END)
- 1
SQL 中明确要使用group by
Excel: =COUNTIF(Ax:Ay, 42)
SQL: COUNT(CASE WHEN A = 42 THEN 1 END)
- 1
- 2
该条件不被引用-即使在使用比较操作员时也是如此:
Excel: =COUNTIF(Ax:Ay, "> 42")
SQL: COUNT(CASE WHEN A > 42 THEN 1 END)
- 1
- 2
但是,文本值必须置于单个引号下0:
Excel: =COUNTIF(Ax:Ay, "Marvin")
SQL: COUNT(CASE WHEN A = 'Marvin' THEN 1 END)
- 1
- 2
SQL 文本比较是否忽略案例差异取决于所谓的整理。即使是默认值也因数据库产品而异:MySQL、MariaDB 和 SQL 服务器默认执行对案例不敏感的比较。
与 Excel 功能不同,SQL 在将字符串与等号()进行比较时不应用通配符匹配。要在 SQL 中使用通配符,您必须使用操作员。操作员使用下划线 ()作为单个字符的通配符,将百分比符号 () 用作任意数量字符的通配符(如 Excels)和 Excels 。countif
=
like
like
_
%
?
*
countif
Excel: =COUNTIF(Ax:Ay, "Marvin*")
SQL: COUNT(CASE WHEN A LIKE 'Marvin%' THEN 1 END)
Countif`在多个列中,每列的一个功能的总和如下:`count
Excel: =COUNTIF(Ax:Cy, 42)
SQL: COUNT(CASE WHEN A = 42 THEN 1 END) +
COUNT(CASE WHEN B = 42 THEN 1 END) +
COUNT(CASE WHEN C = 42 THEN 1 END)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
该功能通常可以在表达中具有条件来实现。Countifs
and
case
Excel: =COUNTIFS(Ax:Ay, 42, Bx:By, 43)
SQL: COUNT(CASE WHEN A = 42 AND B = 43 THEN 1 END)
- 1
- 2
该功能也可以通过案例
表达实现。为此,SQL 区分空字符串和空字符
串值。以下表示表示计算既没有值的行,也不计算空字符串。counta
null
SQL: COUNT(CASE WHEN A IS NOT NULL AND A != '' THEN 1 END)
- 1
请注意,SQL等于操作员()不能用于检查空值——您必须使用。=
is [not] null
文章来源: hiszm.blog.csdn.net,作者:孙中明,版权归原作者所有,如需转载,请联系作者。
原文链接:hiszm.blog.csdn.net/article/details/118992286
- 点赞
- 收藏
- 关注作者
评论(0)