文章实例的数据表,来自上一篇博客《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聚合函数和分组的更多相关文章

  1. 史上最全的mysql聚合函数总结(与分组一起使用)

    1.首先我们需要了解下什么是聚合函数 聚合函数aggregation function又称为组函数. 认情况下 聚合函数会对当前所在表当做一个组进行统计. 2.聚合函数的特点 1.每个组函数接收一个参 ...

  2. 第08章 MySQL聚合函数

    第08章 MySQL聚合函数 我们上一章讲到了 SQL 单行函数.实际上 SQL 函数还有一类,叫做聚合(或聚集.分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值. 1 ...

  3. MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    MySQL聚合函数.控制流程函数(含navicat软件的介绍) 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据 ...

  4. Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询

    创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...

  5. 【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法

    第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1, ...

  6. MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】

    全部章节   >>>> 本章目录 6.1 sum.max 和 min 聚合函数 6.1.1 聚合函数介绍 6.1.2 sum 函数 6.1.3 max/min 函数 6.2 a ...

  7. MySQL聚合函数与数据分组

    我们最常需要的是汇总数据而不是把他们实际检索出来 确定表中行数(或满足某个条件或包含某个特定值的行数) 确定表中行组的和 找出表列(或所有行或特定列)的最大值,最小值和平均值 聚集函数是运行在行组上, ...

  8. MySQL☞聚合函数/分组函数

    分组函数(聚合函数) 1.count(*/列名): a.*:求出该数据的总条数 select  count(*)  from 表名 b.列名:求出该列中列名不为null的总条数 select  cou ...

  9. MySQL 聚合函数(三)MySQL对GROUP BY的处理

    原文来自MySQL 5.7 官方手册:12.20.3 MySQL Handling of GROUP BY SQL-92和更早版本不允许SELECT列表,HAVING条件或ORDER BY列表引用未在 ...

随机推荐

  1. JavaScript的注意事项

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 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 ...

  3. opencv 图像基本操作

    目录:读取图像,获取属性信息,图像ROI,图像通道的拆分和合并 1.  读取图像 像素值返回:直接使用坐标即可获得, 修改像素值:直接通过坐标进行赋值 能用矩阵操作,便用,使用numpy中的array ...

  4. myeclipse10 java builder path libraries 添加tomcat

    Error:     The import javax.servlet cannot be resolved     The import javax.servlet.http.HttpServlet ...

  5. 简单介绍几个CSSReset的方法

    对于小型的网站来说,用这个并不会带来大的资源浪费,但如果是像Yahoo这种架构非常大的网站,必须要有选择地进行CSS重设,以减 少资源浪费. 正在使用CSS的你,用过CSS Reset吗?当然,或许你 ...

  6. HZOI20190714 T3建造游乐场

    先放作者的正解: 先说g吧,有i个点的话,在其中i-1个点中有$C_{i-1}^{2}$种边,每个边有选和不选两种情况.如果度不是偶数呢?用剩下那个点给他连上呗.如果剩下那个点度数不是偶数呢?这是不可 ...

  7. Java ANSI转码UTF-8

    public static void change(String filepath) throws UnsupportedEncodingException, IOException{ Buffere ...

  8. 【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 ...

  9. jdbc框架-dbutils的简单使用

    jdbc框架-dbutils的简单使用 dbutils:是apache组织的一个工具类,jdbc的框架,更方便我们使用 使用步骤: 1.导入jar包(commons-dbutils-1.4.jar) ...

  10. #define 和常量 const 的区别

    const 后的常量,程序对其中只能读不能修改. #include <iostream> using namespace std; int main() { const double pi ...