MySQL的聚集函数
在使用过程中,有时不免用到求最大,最小,等聚集函数。今天记录一下
函数 | 说明 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
用到测试数据如下
create table gather
(
name varchar(20) null,
price decimal(7, 3) null,
remark varchar(200) null
)
comment '聚集函数练习表';
INSERT INTO learn.gather (name, price, remark) VALUES ('apple', 2.000, '苹果说明');
INSERT INTO learn.gather (name, price, remark) VALUES ('pear', 8.000, '223344@qq.com');
INSERT INTO learn.gather (name, price, remark) VALUES ('banana', 3.000, '13612364589');
INSERT INTO learn.gather (name, price, remark) VALUES ('Orange', 5.000, '12345.31');
INSERT INTO learn.gather (name, price, remark) VALUES ('strawberry', 4.000, 'nothing');
INSERT INTO learn.gather (name, price, remark) VALUES ('grapefruit', 2.000, '柚子');
INSERT INTO learn.gather (name, price, remark) VALUES ('Watermelon', null, '西瓜');
avg()
该函数求的是一个列的平均值,且该函数会自动忽略列值为null的行。
比如:
select avg(price) as avg_price from gather;
count()
该函数是对行的数目进行统计,该函数有两种用法。一种是count(*),会统计所有的行。还有一种是count(列名),统计该列列值不为null的行数。
比如:
select count(*) from gather;
select count(price) from gather;
max()
该函数会返回列中最大的值,但是会忽略列值为null的行。对于是数值型的会找出最大的那个。对于非数值型的max()函数会返回最后一行
select max(price) from gather;
select max(name) from gather;
min()
该函数会找出列的最小值,但是会忽略列值为null的行。如果列值为数值型时,则会返回列值为最小的行。如果为非数值型,则会排序返回最前面的行。
select min(price) from gather;
select min(name) from gather;
sum()
该函数会返回列值的总和,它也会忽略列值为null的行。如果此列的值都是非数值型,用此函数会返回0
select sum(price) from gather;
生于忧患,死于安乐