MySQL初学之select与函数的搭配使用
程序员文章站
2022-03-25 07:58:18
上一节介绍了select语句的构成与使用(select语句以及where,order by, group by子句的使用),但是只单单依靠select的字句们,是不能发挥出select的全部能力的,...
上一节介绍了select语句的构成与使用(select语句以及where,order by, group by子句的使用),但是只单单依靠select的字句们,是不能发挥出select的全部能力的,本节将介绍select与函数的搭配使用。
本节测试用表为student表,创建脚本如下:
create table student ( id int not null default 1, name varchar(20) not null default '', chinese float not null default 0.0 comment '语文成绩', english float not null default 0.0 comment '英语成绩', math float not null default 0.0 comment '数学成绩' ); insert into student values(1, '李白', 89,78, 90); insert into student values(2, '唐僧', 67,98, 56); insert into student values(3, '孙悟空', 87,78, 77); insert into student values(4, '老妖婆', 88,98, 90); insert into student values(5, '红孩儿', 82,84, 67); insert into student values(6, '如来佛祖', 55,85, 45); insert into student values(7, '菩萨', 75,65, 30);
1. count()聚合函数
count()函数返回指定列的数量。
count(colname)
使用如下:
-- 统计总共有多少学生 mysql> select count(*) from student; +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
count()会统计一列总的记录数,但是对于null会自动忽略,因为null参与的运算自动忽略null。
2. sum()求和函数
sum返回指定行数据的和,语法如下:
select sum(colname) from tablename [where condition];
示例如下:
-- 统计一个班的数学总成绩 mysql> select sum(math) from student; +-----------+ | sum(math) | +-----------+ | 455.0 | +-----------+ 1 row in set (0.07 sec) -- 统计一个班级各科成绩平均分 -- 别名操作时,as可以省略 mysql> select sum(chinese)/count(*) avg_chinese, sum(math)/count(*) as avg_math, sum(english)/count(*) from student; +-------------+----------+-----------------------+ | avg_chinese | avg_math | sum(english)/count(*) | +-------------+----------+-----------------------+ | 77.57143 | 65.00000 | 83.71429 | +-------------+----------+-----------------------+ 1 row in set (0.04 sec)
注意,sum仅对数值数据起作用,其他类型的数据不能使用sum。
3. avg()平均值函数
agv函数返回满足where条件的一列的平均值。
-- 统计一个班级各科成绩平均分 mysql> select avg(chinese), avg(math), avg(english) from student; +--------------+-----------+--------------+ | avg(chinese) | avg(math) | avg(english) | +--------------+-----------+--------------+ | 77.57143 | 65.00000 | 83.71429 | +--------------+-----------+--------------+ 1 row in set (0.00 sec)
4. max()/min()极值函数
max()/min()返回满足条件的一列最大值/最小值。
-- 求班级最高分与最低分 mysql> select max(chinese+math+english), min(chinese+math+english) from student; +---------------------------+---------------------------+ | max(chinese+math+english) | min(chinese+math+english) | +---------------------------+---------------------------+ | 276.0 | 170.0 | +---------------------------+---------------------------+ 1 row in set (0.00 sec)
在不同的场景和需求下,我们可以使用select搭配不同的子句和函数进行数据的查找。