mysql 组合函数_mysql 复合函数

4000

聚合函数

在这里我们创建几张表来 做例子

create table teacher(

id int PRIMARY KEY auto_increment,

name VARCHAR(20) NOT null,

sub VARCHAR(20) not null

);

create table student(

id int PRIMARY KEY auto_increment,

name VARCHAR(20) not null,

gender VARCHAR(10) not null

);

create table tea_stu(

id int PRIMARY key auto_increment,

t_id int,

s_id int,

score int,

CONSTRAINT fk_tea FOREIGN KEY (t_id) REFERENCES teacher(id),

CONSTRAINT fk_stu FOREIGN KEY (s_id) REFERENCES student(id)

);

1、count() 计数

SELECT COUNT(id) from student;

统计数学分数大于80 的个数

select count(*) as tatal from score WHERE math>80

统计总分大于150的人的个数

select count(*) as total from score WHERE (math+mysql)>150

count (*)不会忽略null, 其他字段会自动忽略

2、sum()求和

统计一个班mysql的总成绩

SELECT sum(mysql) from score

统计各科的总成绩

SELECT sum(mysql),sum(math),sum(english),sum(ui) from score

统计一个班成绩总和

SELECT sum(mysql+ui+english+math) from score

统计一个班每个人的总成绩

SELECT name ,(mysql+english+math) as total FROM score

统计一班math的成绩平均分

SELECT avg(math) from score

SELECT sum(math)/count(math) from score

3、avg()求平均值

求一个班的平均分

SELECT avg(mysql+mysql+math) from score

4、min() max()最大值和最小值

SELECT MIN(ui),MAX(ui) from score

5、分组 group by 分组

对订单表中的商品归类后 显示每一类商品总价

SELECT t_id,sum(score) from tea_stu GROUP BY t_id

查询商品归类后,商品总价大于2000的商品 HAVING关键字

SELECT t_id,sum(score) from tea_stu GROUP BY t_id HAVING sum(score)>150

注意:

(1)、分组函数的重要规则

如果使用了分组函数,或者使用GROUP BY 的查询:出现在SELECT列表中的字段,要么出现在聚合函数里,要么出现在GROUP BY 子句中。

(上面的product出现在了group by中,price出现在了聚合函数中)

GROUP BY 子句的字段可以不出现在SELECT列表当中。

(2)、having where 的区别

①、where和having都是用来做条件限定的,

②、WHERE是在分组(group by)前进行条件过滤,

③、HAVING子句是在分组(group by)后进行条件过滤,

④、WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。

⑤、HAVING子句用来对分组后的结果再进行条件过滤

having sum(price)>2000 相当于 拿着 列名为sum(price)去查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值