前情提要
之前已经学过了很多关于mysql的基本操作了,比如说可以实现简单的查询。但是,我们辛辛苦苦的将数据录入数据库,只能够实现简单的查询功能的话,显然不可以让人满足。本期,将学习数据的聚合查询。当然啦,首先我们应该创建一些数据。
创建数据表
create table Book(
id int unsigned not null auto_increment,
title varchar(50) not null,
pub_date date,
views int unsigned not null default(0),
comment int unsigned not null default(0),
primary key (id)
);
插入数据
insert into Book values
(0, '射雕英雄传','1980-5-1',4322,534),
(0, '天龙八部','1986-7-24',2533,140),
(0, '笑傲江湖','1995-12-24',3223,380),
(0, '雪山飞狐','1987-11-11',932,24),
(0, '神雕侠侣', null, 3333, 222),
(0, '神雕侠侣', null, 1823, 125);
通过count统计个数
只需要在select语句中使用count(*),即可以完成统计个数。
select count(*) from Book;
如果,你想要统计每一个字段非null的个数,那么只需要分别填写上对应的字段名即可。
select count(title), count(pub_date)
from Book;
这里面,我们注意到数据中出现了两次神雕侠侣,如果我们在统计个数的时候,不希望统计重复的个数,只希望得到不重复的数据的个数,也可以配合distinct一起使用。
select count(title) from Book;
select count(distinct title) from Book;
通过sum求和
使用sum,就可以完成对某一列的求和,注意,null值将会被排除,不会被进行求和。
select sum(views), sum(comment)
from Book;
通过avg计算平均值
使用方法和sum相同,改为avg,即可完成求平均值的工作。
select avg(views), avg(comment)
from Book;
通过max和min计算最大最小值
max可以得到最大值,min可以得到最小值。
select max(views), min(comment)
from Book;