zoukankan      html  css  js  c++  java
  • oracle中的分组聚合

    聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,所以有的时候也把其称之为分组函数。 

    在下面的介绍过程中我们还重点讲解了group by having等知识点,希望你所有收获!

    group by 后可以跟多个分组的字段

     select deptno,job,count(*) from emp group by deptno,job order by deptno;

    非法使用组函数

    1.select 后面只能跟两种数据1.聚合函数2.分组条件

    1、 所用包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中。

    举例:select empno,count(job) from emp;

    正确写法如下: select empno,count(job) from emp group by empno;

    // group by 后可以跟多个分组的字段 

    select sid,cid,max(score)........group by sid

    select sid,cid,max(score).........group by sid,cid

    2、 不能在 WHERE 子句中使用组函数(注意)。

     select deptno from emp where count(job)>0 group by deptno;

    备注:ORA-00934: 此处不允许使用分组函数 Having 子句 HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。

    WHERE 子句搜索条件在进行分组操作之前应用;

    而 HAVING 搜索条件在进行分组操作之后应用。

    HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。

    HAVING 子句可以引用选择列表中出现的任意项。

    备注:having子句通常与group by子句结合使用

     查询部门的员工人数大于五的部门编号

    select deptno,count(*) from emp group by deptno having count(*)>5;

    //求出某个部门中相同职位的员工人数 group by 后可以跟多个分组的字段
     select deptno,job,count(*) from emp group by deptno,job order by deptno;


    Having 在则group必须在

    group by在having未必在

    备注:分组函数可以嵌套

    嵌套函数

      函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则.
     嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中
    总结:整个查询语句的语法格式如下:
    SELECT column, group_function(column)
    FROM table
    [WHERE condition]
    [GROUP BY group_by_expression]
    [HAVING group_condition]
    [ORDER BY column];

  • 相关阅读:
    quart源码阅读(一)
    Python poll IO多路复用
    Python select IO多路复用
    谁才是真正的垃圾:判断对象的可触及性
    Java的四种引用之强弱软虚
    JVM的基本结构及其各部分详解(二)
    JVM的基本结构及其各部分详解(一)
    java面试笔试题收集
    看懂Class文件的装载流程
    java单例模式
  • 原文地址:https://www.cnblogs.com/thomasbc/p/6657128.html
Copyright © 2011-2022 走看看