MySQL进阶-函数
合计函数
1.平均值AVG
例如求所有学生的平均分:
select AVG(Score) from students;
分别求男生、女生的平均分:
select Sex,avg(Score) from students group by Sex;
(select后边的‘Sex’只是为了在输出的平局分前边显示出性别)
或者,把平均分以新的名字“avg_sex”输出
select avg(Score) as avg_sex from students group by Sex;
再复杂一点的,输出得分高于平均分的学生的学号和姓名:
select ID,Name from students where Score>(select avg(Score) from students)
2.求和SUM
求所有学生的总分
select sum(Score) from students;
其它操作,类似AVG
3.COUNT
统计表中记录的条数
select count(*) from students;
按性别统计记录的条数
select count(*) from students group by Sex;
统计得分高于平均分的条数
select count(*) from students where Score>(select avg(Score) from students;)
4.最大值MAX 最小值MIN
找到分数最高的学生
select Name,MAX(Score) from students;
5.GROUP BY
group by用于合计函数;首先根据一个或多个列对原始数据分组,然后再执行相关的函数。比如上边求男、女生的平均分。
6.HAVING
现在,如果要求group by分组后的数据进一步做条件筛选,可能有人会想用where啊。但是where并不能与合计函数一块儿使用,未解决此,就有了HAVING函数。
这个例子不太好举,用W3SCHOOL的一个例子
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
找到订单总金额少于2000的客户
select Customer,sum(OrderPrice) from Orders
goup by Customer Having sum(OrderPrice)<2000;
7.Order By
对各个顾客的消费金额排序(从高到低)
select Customer,sum(OrderPrice) as total from orders group by Customer order by total desc;