mysql 分组总和求最大值 的两种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 分组总和求最大值 的两种方式相关的知识,希望对你有一定的参考价值。
参考技术A groupby 后 排序 再 接 limit 1轻松学会MySql分组函数
首先介绍一下MySql中的分组函数:
count():计数
sum():求和
avg():求平均值
max():求最大值
min():求最小值
五个函数!!
接下来来介绍一下它们怎么用:
语法:
分组函数(字段)
例子1:找出所有员工工资的总和?(sum函数的应用)
select sum( sal ) from emp;
例子2:找出员工中的最高工资?(max函数的应用)
select max( sal ) from emp;
分组函数也叫多行处理函数:因为分组函数是输入多行,输出一行。
我通俗的拿上面的一个求和例子来讲,就是要所有工资的总和,需要
多行的员工工资数据来进行运算,所以是输入多行,而结果就只有sum
一行,这就是通俗的解释为什么叫多行处理函数。
例子3:找出工资高于平均工资的员工?(avg函数的应用)
select ename from emp where sal> avg(sal);
我相信大多数人第一反应都是这样写,其实这个是错误的。
为什么错误呢?
因为在sql中有一条规定:
分组函数不可直接使用的where中!
正确写法:
我们先分析要求工资高于平均工资的员工。
1.我们要先找出平均工资
select avg(sal) from emp;
应用了多行处理函数,其结果就是一个值!
我相信大家都会吧!
2.找出工资高于平均工资的人
select ename from emp where sal >(select avg(sal) from emp);
这里其实运用了子查询:也就是select中嵌套select。
单行处理函数:ifnull(字段,被当做什么)
可能为null的函数被当做什么。
select ename,(ifnull(comm,0)+sal)*12 from emp;
查询每个员工的年薪,comm是补贴,如果补贴为null则被当做
0处理,为什么要引入这个函数呢,因为在sql中规定:
在计算式中有null进行运算,结果为null,我们不能因为某个人的
补贴为null则说明他的年薪也是null吧,为了避免这种异常。
以上是关于mysql 分组总和求最大值 的两种方式的主要内容,如果未能解决你的问题,请参考以下文章