zoukankan      html  css  js  c++  java
  • oracle数据分组

    一,什么是分组函数

    分组函数作用于一组数据,并对一组数据返回一个值

    二,分组函数类型

    Avg ,count,max,min,stddev(标准方差),sum。

    函数名称

    函数描述

    Count

    返回找到的记录数

    Min

    返回一个数字列或计算列的最小值

    Max

    返回一个数字列或计算列的最大值

    Sum

    返回一个数字列或计算列总和

    avg

    返回一个数字列或计算列的平均值

    三,分组函数的语法

      SELECT   [column,] group_function(column), ...

    FROM                table

    [WHERE  condition]

    [GROUP BY      column]

    [ORDER BY      column];

    //返回总记录数   //* 代表的是:一条记录

    SQL> select count(*) from emp;

    //返回comm不为空的总记录数

    SQL> select count(comm) from emp;

    //COUNT(DISTINCT expr) 返回 expr非空且不重复的记录总数

    SQL> select count(distinct(sal)) from emp;

    注意:组函数忽略空值

    //返回所有员工的平均工资  

    SQL> select avg(nvl(sal,0)) from emp;

    注意:NVL函数使分组函数无法忽略空值

    //返回员工编号最小值  

    SQL> select min(empno) from emp;

    //返回员工工资最大值

    SQL> select max(sal) from emp;

    //求该月本公司发出的工资总额

    SQL> select sum(comm)+sum(sal) from emp;

    SQL> select sum(nvl(sal,0)+nvl(comm,0)) from emp;

    Group by

    如果在查询的过程中需要按某一列的值进行分组,以统计该组内数据的信息时,就要使用group by子句。不管select是否使用了where子句都可以使用group by子句。

    注意:group by子句一定要与分组函数结合使用,否则没有意义。

    //求出每个部门的员工人数

    SQL> select deptno,count(*) as "人数" from emp group by deptno;

    //求出每个部门的员工的平均工资

    SQL> select deptno,avg(nvl(sal,0)) from emp group by deptno;

    //注意:group by 子句中的列不必包含在SELECT 列表中

    SQL> select avg(nvl(sal,0)) from emp group by deptno;

    //求出某个部门中相同职位的员工人数   group by 后可以跟多个分组的字段

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

    Having 子句

        HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。

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

    语法:

    SELECT     column, group_function

    FROM                table

    [WHERE   condition]

    [GROUP BY      group_by_expression]

    [HAVING  group_condition]

    [ORDER BY       column];

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

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

    原文:http://blog.csdn.net/java958199586/article/details/7350723

  • 相关阅读:
    机器视觉资料整理
    《用TCP/IP进行网络互连》读书笔记
    Win Form不能响应键盘事件
    C语言 字符串前加L的意义 如:L“A”
    UniCode 下 CString 转 char* 的方法(转)
    BATCH
    HALCON不支持的设备中,获取图像
    关于FragmentManager动态管理Fragment时Fragment生命周期的探究
    关于如何惟一地标识一台Android设备的综合性讨论
    如何使ActionBar不那么单调
  • 原文地址:https://www.cnblogs.com/puresoul/p/3554640.html
Copyright © 2011-2022 走看看