mysql聚合函数和分组
文章实例的数据表,来自上一篇博客《mysql简单查询》:http://blog.csdn.net/zuiwuyuan/article/details/39349611
一、 聚合函数
聚合函数,也叫做组合函数
求所有数据数
count不统计null ,统计的是记录数
SELECT COUNT(comm) FROM emp; # 查询emp表comm的总数
SELECT COUNT(*) FROM emp; # 查询emp表行记录的总数
SELECT COUNT(DISTINCT deptno) FROM emp; # 查询不重复deptno的记录总数
求平均数,忽略空值
SELECT AVG(sal) FROM emp;
SELECT AVG(comm) FROM emp; # 2200/4=550
求和
SELECT SUM(sal) FROM emp;
求最大值
SELECT MAX(sal) FROM emp;
#求最小值
SELECT MIN(sal) FROM emp;
二、 分组
Group by字句的真正作用在于与各种聚合函数配合使用,它用来对查询出来的数据进行分组
分组的含义是: 把该列具有相同值的多条记录当成一组记录处理,最后只输出一条记录
分组函数忽略空值
结果集隐式按升序排列,如果需要改变排序方式可以使用order by字句
/**
GROUP BY 可以根据你的分组条件对数据进行分组, 然后再进行统计
其实,我们对部门进行分组,然后统计出分组后的聚合值(平均、最大、最小等)
*/
#查询每个部门的平均工资
SELECT deptno,AVG(sal) FROM emp GROUP BY deptno;
#查询每个部门的员工数
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;
查询每个部门的整体工资情况
如果select语句中的列没有使用组函数,那么它就必须出现在group by字句中
而出现在group by字句中的列,不一定出现在select语句中
SELECT deptno ,AVG(sal),MAX(sal),MIN(sal),SUM(sal),COUNT(1)
FROM emp
GROUP BY deptno;
# 每个部门每个职位的平均工资
SELECT deptno,job,AVG(sal) FROM emp GROUP BY deptno,job;
三、 限定组的结果
HAVING字句用来对分组后的结果再进行条件过滤
# 查询部门平均工资大于2000的
# 分组后加条件: 使用having
# where和having都是用来做条件限定的,但是having只能用在group by之后
SELECT deptno ,AVG(sal),MAX(sal),MIN(sal),SUM(sal),COUNT(1)
FROM emp
# where AVG(sal)>2000; 此句会报错,因为在where字句中无法使用分组函数
GROUP BY deptno
HAVING AVG(sal)>2000;
where和having的区别:
where是在分组前进行条件过滤的
having字句是在分组后进行条件过滤的
where字句中不能使用聚合函数
having字句中可以使用局和函数和一般过滤条件
四: 查询结果限定
在select语句最后可以使用limit来限定查询结果返回的起始记录和总数量
select...limit offset_start,row_count;
offset_start: 第一个返回记录行的偏移量,默认为0
row_count: 要返回记录行的最大数目
SELECT * FROM emp LIMIT 5; # 检索前五条记录
SELECT * FROM emp LIMIT 5,10; # 从第6行开始,记录行6-15(因为默认是0,所以此处的5只的是第六行记录)
mysql聚合函数和分组的更多相关文章
- 史上最全的mysql聚合函数总结(与分组一起使用)
1.首先我们需要了解下什么是聚合函数 聚合函数aggregation function又称为组函数. 认情况下 聚合函数会对当前所在表当做一个组进行统计. 2.聚合函数的特点 1.每个组函数接收一个参 ...
- 第08章 MySQL聚合函数
第08章 MySQL聚合函数 我们上一章讲到了 SQL 单行函数.实际上 SQL 函数还有一类,叫做聚合(或聚集.分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值. 1 ...
- MySQL聚合函数、控制流程函数(含navicat软件的介绍)
MySQL聚合函数.控制流程函数(含navicat软件的介绍) 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据 ...
- Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询
创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...
- 【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法
第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1, ...
- MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】
全部章节 >>>> 本章目录 6.1 sum.max 和 min 聚合函数 6.1.1 聚合函数介绍 6.1.2 sum 函数 6.1.3 max/min 函数 6.2 a ...
- MySQL聚合函数与数据分组
我们最常需要的是汇总数据而不是把他们实际检索出来 确定表中行数(或满足某个条件或包含某个特定值的行数) 确定表中行组的和 找出表列(或所有行或特定列)的最大值,最小值和平均值 聚集函数是运行在行组上, ...
- MySQL☞聚合函数/分组函数
分组函数(聚合函数) 1.count(*/列名): a.*:求出该数据的总条数 select count(*) from 表名 b.列名:求出该列中列名不为null的总条数 select cou ...
- MySQL 聚合函数(三)MySQL对GROUP BY的处理
原文来自MySQL 5.7 官方手册:12.20.3 MySQL Handling of GROUP BY SQL-92和更早版本不允许SELECT列表,HAVING条件或ORDER BY列表引用未在 ...
随机推荐
- JavaScript的注意事项
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Laravel访问出错错误信息:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or dire
错误信息:`Warning: require(/http/www.mywakavLee.cn/bootstrap/../vendor/autoload.php): failed to open str ...
- opencv 图像基本操作
目录:读取图像,获取属性信息,图像ROI,图像通道的拆分和合并 1. 读取图像 像素值返回:直接使用坐标即可获得, 修改像素值:直接通过坐标进行赋值 能用矩阵操作,便用,使用numpy中的array ...
- myeclipse10 java builder path libraries 添加tomcat
Error: The import javax.servlet cannot be resolved The import javax.servlet.http.HttpServlet ...
- 简单介绍几个CSSReset的方法
对于小型的网站来说,用这个并不会带来大的资源浪费,但如果是像Yahoo这种架构非常大的网站,必须要有选择地进行CSS重设,以减 少资源浪费. 正在使用CSS的你,用过CSS Reset吗?当然,或许你 ...
- HZOI20190714 T3建造游乐场
先放作者的正解: 先说g吧,有i个点的话,在其中i-1个点中有$C_{i-1}^{2}$种边,每个边有选和不选两种情况.如果度不是偶数呢?用剩下那个点给他连上呗.如果剩下那个点度数不是偶数呢?这是不可 ...
- Java ANSI转码UTF-8
public static void change(String filepath) throws UnsupportedEncodingException, IOException{ Buffere ...
- 【JZOJ4783】【NOIP2016提高A组模拟9.15】Osu
题目描述 输入 输出 样例输入 4 2 1 2 2 2 0 2 3 0 0 4 2 0 样例输出 1 2 1 数据范围 样例解释 圆圈只在出现的时刻有效.即:时刻t_i时鼠标位置恰好在(x_i,y_i ...
- jdbc框架-dbutils的简单使用
jdbc框架-dbutils的简单使用 dbutils:是apache组织的一个工具类,jdbc的框架,更方便我们使用 使用步骤: 1.导入jar包(commons-dbutils-1.4.jar) ...
- #define 和常量 const 的区别
const 后的常量,程序对其中只能读不能修改. #include <iostream> using namespace std; int main() { const double pi ...