Mysql下count()和sum()区别

要求:查询出2门及2门以上不及格者的平均成绩。
经常会用两种查询语句有两种:

 代码如下 复制代码

1. select name,sum(score < 60) ,avg(score)  from result  group by name having sum(score<60) >=2;

再看

算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录。COUNT(*)函数计算行数,所以计算动物数目的查询应为:

 代码如下 复制代码
mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+

在前面,你检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数:

 代码如下 复制代码
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner  | COUNT(*) |
+--------+----------+
| Benny  |        2 |
| Diane  |        2 |
| Gwen   |        3 |
| Harold |        2 |
+--------+----------+

注 意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:

 代码如下 复制代码
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause

COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式。

每种动物的数量:

 代码如下 复制代码
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird    |        2 |
| cat     |        2 |
| dog     |        3 |
| hamster |        1 |
| snake   |        1 |
+---------+----------+

每种性别的动物数量:

 代码如下 复制代码
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+------+----------+
| sex  | COUNT(*) |
+------+----------+
| NULL |        1 |
| f    |        4 |
| m    |        4 |
+------+----------+

(在这个输 出中,NULL表示“未知性别”。)

按种类和性别组合的动物数量:

 代码如下 复制代码
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | NULL |        1 |
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

若 使用COUNT( ),你不必检索整个表。例如, 前面的查询,当只对狗和猫进行时,应为:

 代码如下 复制代码
mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE species = 'dog' OR species = 'cat'
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
+---------+------+----------+

或, 如果你仅需要知道已知性别的按性别的动物数目:

 代码如下 复制代码

mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE sex IS NOT NULL
    -> GROUP BY species, sex;
+---------+------+----------+
| species | sex  | COUNT(*) |
+---------+------+----------+
| bird    | f    |        1 |
| cat     | f    |        1 |
| cat     | m    |        1 |
| dog     | f    |        1 |
| dog     | m    |        2 |
| hamster | f    |        1 |
| snake   | m    |        1 |
+---------+------+----------+

mysql sum

 代码如下 复制代码

2.select name ,count((score<60)!=0) as a,avg(score) from result group by name having a >=2;

时间: 2024-08-01 00:07:29

Mysql下count()和sum()区别的相关文章

数据库 count和sum区别

最近备考软考,复习数据库时候,发现count和sum,貌似差不错.就仔细查了查.           表 人     id name number     1 贱人 3     2 好人 4  select count(number) from 人; ----执行之后结果为:2 (表示有2条记录)  select sum(number) from 人;---执行之后结果为:7(表示各记录number之和为7)     ,一个是记录,一个是总数量.   count()函数里面的参数是列名的的时候,

Mysql中的count()与sum()区别详细介绍_Mysql

首先创建个表说明问题 复制代码 代码如下: CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` varchar(20) default NULL, `score` tinyint(4) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 插入一些数据, 复制代码 代码如下: insert into result values ('张三','数学',90), ('张三'

mysql下count(*)与count(column)区别性能对比

count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值. count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的. 关于他们的性能问题 1.任何情况下SELECT COUNT(*) FROM tablename是最优选择: 2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = 'value' 这种查询: 3.杜绝SELECT COUNT(COL)

mysql中count(*)和count(id)的区别

mysql查询在分页或者统计某个条件下的记录数,会常用到count(),那么你知道count(*)和count(id)或count(name)等等有什么区别吗?   看看下面这个图,应该就明白了:     count(*)表示所有记录数,包括为空NULL的数据:而count(某个字段),只会计算有效数据的条数.这就是它们之间最主要的区别了. 网上搜索了下,发现各种说法都有: 比如认为COUNT(COL)比COUNT(*)快的: 认为COUNT(*)比COUNT(COL)快的: 还有朋友很搞笑的说

mysql中count(id) count(1) count(*)的用法区别

表结构如下:  代码如下 复制代码 mysql> show create table userG; *************************** 1. row ***************************        Table: user Create Table: CREATE TABLE `user` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `name` varchar(50) NOT NULL,  

MySQL中文参考手册5(安装MySQL下)

mysql|参考|参考手册|中文 MySQL中文参考手册5(安装MySQL下)转载 译者:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net 4.12 Win32 注意事项这节描述在Win32上安装和使用MySQL,这也在MySQL Win32分发所带的"readme"文件中描述.  4.12.1 在Win32上安装MySQL如果你没有一个注册的MySQL版本,你应该首先下载共享软件版本,从:  MySQL 3.21

解析mysql与Oracle update的区别

本篇文章是对mysql与Oracle update的区别进行了详细的分析介绍,需要的朋友参考下   update :单表的更新不用说了,两者一样,主要说说多表的更新 复制代码 代码如下:        Oracle> Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可以试试Oracle的游标         update (         select t.charger_id_ new_charger_id_         from t_cus_year_status t

MariaDB与MySQL数据库之间有什么区别

老蒋前天在Linux 128MB小内存VPS服务器中安装网站环境环境的时候默认安装的是MySQL数据库,发现在运行脚本过程编译的时候内存不够用导致无法安装,而且即便安装成功占用的内存资源还是比较大的.后面就更换采用MariaDB数据库取代MySQL数据库且安装成功,占用资源和运行是一切正常的.     我们建站的时候大部分估计还是用MySQL数据库比较多的,毕竟大家已经熟悉这个方式,但是任何产品都不是一层不变的具有优势地位.原来MySQL创始人Widenius在离开公司之后重新创建MariaDB

详细解读MySQL中COUNT函数的用法_Mysql

MySQL的COUNT函数是最简单的功能,非常有用的计算,预计由一个SELECT语句返回的记录数. 要了解COUNT函数考虑的EMPLOYEE_TBL的的表具有以下记录: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+----