SQL的Count if

举报
孙中明 发表于 2022/01/22 22:21:40 2022/01/22
【摘要】 https://modern-sql.com/excel/countif-in-sql 微软 Excel 功能计算满足条件的单元格:countif Excel: =COUNTIF(<source...

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。