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 分组总和求最大值 的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中,如何找到分组在特定列上的 N 个最大值的总和? [复制]

mysql从表中显示数据最大值和总和

求一个数组当中最大(最小)值的两种计算方法

MySQL 聚合函数 和 分组查询(初级)

MySQL 聚合函数 和 分组查询(初级)

MySQL 聚合函数 和 分组查询(初级)