
这几天学习《MySQL必知必会》发现有一句SQL语句有点绕,所以在这里记录以下,以免日后忘记。
现在由这样两张表,分别是orders表:
customers表:
然后执行以下SQL语句:
得到以下结果:
刚开始看到这个结果很疑惑,想的是子查询中的 COUNT() 不应该是输出一个值吗,为什么这里输出了一列值。其实这个原因很简单,这个子查询的条件是 orderscust_id = customerscust_id ,相当于将orders表中的cust_id与customers表中的 cust_id 比较,对于customers表中的每个 cust_id ,orders表都要比较一次,一共比较5次,所以有5条记录。
这样说可能还是比较绕,现在从简单的例子看起,我们最先开始学习WHERE语句的时候是这样的:
我们假设现在有一张名为user的表,根据 user_id=111 这个条件去检索,相当于把表中user_id这一列中的每一行数据都与111进行比较,如果相等,那就是要检索出的行。
回到问题,根据子查询语句 SELECT COUNT() FROM orders WHERE orderscust_id = customerscust_id 。我们可以拆解的来分析, 相当于customers表中的每个 cust_id 都是上述简单例子中的111,然后用orders表中的 cust_id 这一列去匹配,一共匹配5次,每一次过滤的结果再通过聚合函数 COUNT() 记录行数, 就得到一列别名为 orders 的数据为 2,0,1,1,1 ,最后在最外部的查询中,通过 ORDER BY 排序得到结果 2,1,0,1,1 。
其实书中已经为这个问题给出了解释,就在这个例子后的分析里面。
就是用来计算数字的个数,比如我们要求红框中数字的个数,可以直接用COUNT函数=COUNT(B8:B11),得到结果3,因为有3个数字,第一个单元是文本,所以不计,如下图所示:
1、COUNT函数只能对数字数据进行统计,对于空单元格、逻辑值、文本数据或者错误值将被忽略。简单来说,这些类型的值,不被计入个数,并且,错误值不影响公式,不会致使公式出错。
2、日期、时间背后是数字的另一种展现形式,也会被COUNT函数计数。日期和时间,其背后都是数字,他们只不过是穿了马甲的数字,也会被COUNT函数识别为数字计数。
Excel的最小是日期是1900/1/1,大家可以在表格中写出这个日期,然后将单元格格式调为常规,你会发现,它其实是数字1。然后随着日期增长,数字逐渐变大。
3、逻辑值放在数组中或单元格中时,不被计数;单独作为一个参数时将被计算。
COUNT() 函数返回匹配指定条件的行数。
SQL COUNT(column_name) 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name;
SQL COUNT() 语法
COUNT() 函数返回表中的记录数:
SELECT COUNT() FROM table_name;
SQL COUNT(DISTINCT column_name) 语法
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name;
注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。
SQL COUNT(column_name) 实例
下面的 SQL 语句计算 "access_log" 表中 "site_id"=3 的总访问量:
实例
SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;
SQL COUNT() 实例
下面的 SQL 语句计算 "access_log" 表中总记录数:
实例
SELECT COUNT() AS nums FROM access_log;
执行以上 SQL 输出结果如下:
SQL COUNT(DISTINCT column_name) 实例
下面的 SQL 语句计算 "access_log" 表中不同 site_id 的记录数:
实例
SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;
执行以上 SQL 输出结果如下:
COUNT 函数计算包含数字的单元格个数以及参数列表中数字的个数。
语法:
COUNT(value1, [value2], );
COUNT 函数语法具有下列参数:
value1 必需。 要计算其中数字的个数的第一项、单元格引用或区域。
value2, 可选。 要计算其中数字的个数的其他项、单元格引用或区域。
扩展资料
最多可包含 255 个。
注意:这些参数可以包含或引用各种类型的数据,但只有数字类型的`数据才被计算在内。
备注:
如果参数为数字、日期或者代表数字的文本(例如,用引号引起的数字,如 '1'),则将被计算在内。
逻辑值和直接键入到参数列表中代表数字的文本被计算在内。
如果参数为错误值或不能转换为数字的文本,则不会被计算在内。
如果参数是一个数组或引用,则只计算其中的数字。 数组或引用中的空白单元格、逻辑值、文本或错误值将不计算在内。
函数 :=COUNT(A4:C8);
解答:A4:C8是查找的区域;
查找有多少数字单元格的个数;
数字、日期、或以文本代表的数字计算。
以上就是关于MySQL数据库COUNT和WHERE联合使用全部的内容,包括:MySQL数据库COUNT和WHERE联合使用、count统计个数是什么、sql中count函数的使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)