mysql 复合函数

本文详细介绍了MySQL中的复合函数,包括计数COUNT()、求和SUM()、平均值AVG()、最大值MAX()和最小值MIN()。通过实例展示了如何在查询中使用这些函数进行数据统计,如计算成绩平均分、总和等。同时,还探讨了GROUP BY分组和HAVING条件过滤,强调了它们与WHERE子句的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

聚合函数
在这里我们创建几张表来 做例子

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、付费专栏及课程。

余额充值