https://modern-sql.com/excel/countif-in-sql

微软 Excel 功能计算满足条件的单元格:countif

Excel: =COUNTIF(<source>, <condition>)

在 SQL 中,使用函数内的案例表达方式可以获得相同的行为:count

  SQL: COUNT(CASE WHEN <condition> THEN 1 END)

SQL 中明确要使用group by

Excel: =COUNTIF(Ax:Ay, 42)
SQL: COUNT(CASE WHEN A = 42 THEN 1 END)

该条件不被引用-即使在使用比较操作员时也是如此:

Excel: =COUNTIF(Ax:Ay, "> 42")
SQL: COUNT(CASE WHEN A > 42 THEN 1 END)

但是,文本值必须置于单个引号下0:

Excel: =COUNTIF(Ax:Ay, "Marvin")
SQL: COUNT(CASE WHEN A = 'Marvin' THEN 1 END)

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)

该功能通常可以在表达中具有条件来实现。Countifs and case

Excel: =COUNTIFS(Ax:Ay, 42, Bx:By, 43)
SQL: COUNT(CASE WHEN A = 42 AND B = 43 THEN 1 END)

该功能也可以通过案例表达实现。为此,SQL 区分空字符串和空字符串值。以下表示表示计算既没有值的行,也不计算空字符串。counta null

SQL: COUNT(CASE WHEN A IS NOT NULL AND A != '' THEN 1 END)

请注意,SQL等于操作员()不能用于检查空值——您必须使用。= is [not] null

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐