【SQL】COUNT()函数 用法详解

64 篇文章 1 订阅

COUNT()函数

COUNT函数用法:COUNT ( [ALL | DISTINCT] column | expression | *)

  1. ALL关键字指示统计所有值,而DISTINCT关键字强制函数仅对不同的值进行操作。 默认情况下,使用ALL选项。
  2. 条件表达式
    • COUNT()函数中条件表达式加 OR null。例如,SELECT COUNT(number > 200 OR null) FROM vf;
    • COUNT()函数中条件表达式使用 if。例如,SELECT COUNT(if(number > 200, 1, null)) FROM vf;
    • COUNT()函数中条件表达式使用 case when。例如,SELECT COUNT(case when number > 200 then 1 end) FROM vf;

解析:sql 语句中count()有条件的时候为什么要加上or null?

例如count(sex= ‘男生’ or NULL) ,为什么要加上or NULL,直接count(sex=‘男生’)有什么问题吗?不就是要找sex= '男生’的数据吗,为什么要计算NULL的数据。

答案: 因为当 sex不是男生时 sex=‘男生’ 结果false。不是 NULL, count在值是NULL是不统计数,(count(‘任意内容’)都会统计出所有记录数,因为count只有在遇见null时不计数,即count(null)==0,因此前者单引号内不管输入什么值都会统计出所有记录数),至于加上or NULL , 很像其他编程里的or运算符,第一个表达式是true就是不执行or后面的表达式,第一个表达式是false 执行or后面的表达式 。当sex不为男生时,sex= ‘男生’ or NULL 的结果是NULL,Count才不会统计上这条记录数

记录自己的错误:

语句:
Right:select (select count(user_id) from Users)
Error:select count(select user_id from Users)
错误示例:count()里边不能加查询语句啊!!!

-- select contest_id, round(count(*)/count(select Users.user_id from Users)*100, 2) as percentage 

参考文献:
sql—count() 中加表达式计数
count加表达式,Mysql中Count函数的正确使用!
SQL聚合函数
数据库的高级查询二:聚合函数(SUM、MAX,MIN,AVG,COUNT)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
count(1)是一种常见的SQL语句中的聚合函数,用于统计满足特定条件的记录数。在了解count(1)的详解之前,我们先来了解一下count()函数的基本用法count()函数用于计算指定列或表中的非空记录数。通常情况下,我们会使用count(*)来统计所有记录的数量。例如,以下示例查询将返回表中所有记录的数量: ``` SELECT COUNT(*) FROM table_name; ``` 而count(1)与count(*)的作用是相同的,它们都会返回表中所有记录的数量。使用count(1)的主要原因是为了提高性能。当使用count(*)时,数据库需要检查每一行是否为空并计数,而使用count(1)时,数据库只需检查每一行是否存在即可,不需要关注具体的列值,因此更加高效。 在实际使用中,count(1)可以与其他SQL语句结合使用,如WHERE子句、GROUP BY子句等。以下是一些示例: 1. 统计表中满足某个条件的记录数: ``` SELECT COUNT(1) FROM table_name WHERE condition; ``` 2. 按照某个列进行分组,并统计每组中的记录数: ``` SELECT column_name, COUNT(1) FROM table_name GROUP BY column_name; ``` 需要注意的是,count(1)返回的是整数类型的结果,表示满足条件的记录数。在某些数据库中,也可以使用其他的非空字段代替1,如count(column_name)或count('x'),但count(1)是最常见和推荐的用法。 希望以上解释能够帮助您理解count(1)的详解。如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值