zoukankan      html  css  js  c++  java
  • 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化

    

    1组函数 avg(),sum(),max(),min(),count()案例:

    selectavg(sal),sum(sal),max(sal),min(sal),count(sal)

    from emp

    /

    截图:

    2 组函数和null在一起

    案例:求员工的平均奖金

    错误sql:

    select avg(comm) 方式1,sum(comm)/count(comm)方式2,sum(comm)/count(*) 方式3

    from emp;

    截图:

    错误原因:

    select count(comm),count(*) from emp;

    分析:

    --组函数自己主动滤空,组函数忽略空值

    --修正函数的滤空

    select count(nvl(comm,0)),count(*) fromemp;

    3.分组数据

    A  求各个部门的平均工资

    思路:须要把各个部门的数据划分….10部门 20部门 30部门….分组……

    select deptno,avg(sal)

    from emp

    group by deptno;

    执行结果:

    B  组函数设计的本意

    (1)select检索的列 必需要位于group by后面的集合列中

    (2)、组函数设计的本意:必需要在分组数据之上,进行结果集的检索….

    注意:group by子句要求:全部在select中出现的列,都必须在出现group by分组子句中。

    select a, b, c

    from emp

    group by a, b, c,d; 这样的格式是对的,由于在select后的abc都在groub by后面。

     

    select a, b, f

      from emp

      group by a, b, c,d;  这样的格式是错的,由于在select后的f不在group

    4 GROUP BY子句中包括多个列

    --按部门  不同的职位 统计平均工资

    --先依照部门分组。在依照job分组,假设deptnojob一样,就是同一组。然后求平均工资。

     

    --求各个部门的,每个工种的平均工资

    select deptno,job,avg(sal),count(deptno)

    from emp

    group by deptno,job

    order by 1;

    截图:

    5 分组过滤

    --查询各个部门的平均工资

    --进一步。查询平均工资大于2000的部门

    select deptno,avg(sal)

    from emp

    group by deptno

    having avg(sal) > 2000;

    6 havingwhere子句差别

    10号部门的平均工资

    方法1:先分组,在过滤

    select deptno,avg(sal)

    from emp

    group by deptno

    having deptno=10;

    方法2:先过滤再分组

    select deptno,avg(sal)

    from emp

    where deptno = 10

    group by deptno;

    7 关于sql优化

    select * from emp;

    select deptno, ename, ...,  from emp 把要显示的全部的列都写出来,速度快,,不须要"翻译"

     

    select *form emp

    where (deptno = 10) and (deptno = 20) and (deptno=30)

     

    <---------

    oracle解析逻辑表达式 的方向....从右向左

     

  • 相关阅读:
    指针和引用的区别
    vs不自动退出控制台程序的办法
    ads出现村田电容电感无法仿真的问题解决(`BJT1' is an instance of an undefined model `BJTM1')
    解决浏览器跨域的几中方式
    js的事件委托机制
    let和const命令
    JavaScript中闭包的写法和作用详解
    提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析
    提升HTML5的性能体验系列之四 使用原生UI
    提升HTML5的性能体验系列之三 流畅下拉刷新和上拉
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5065552.html
Copyright © 2011-2022 走看看