zoukankan      html  css  js  c++  java
  • 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只的是第六行记录)


  • 相关阅读:
    uva-442 Matrix Chain Multiplication
    mongodb笔记2
    用MODELLER构建好模型后对loop区域进行自动的优化过程
    Java乔晓松-android的四大组件之一Service(服务的绑定)
    内部排序之交换排序
    C,C++中的static
    [置顶] 贝叶斯分类(一)
    RabbitMQ和kafka从几个角度简单的对比--转
    rabbitmq Clustering Guide--官方
    How To Cluster Rabbit-MQ--reference
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330030.html
Copyright © 2011-2022 走看看