• 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解析逻辑表达式 的方向....从右向左

     

  • 相关阅读:
    dockerfile 详解
    kubectl简介
    关于高级事件的使用
    关于拖拽延伸出来的一些效果
    照片墙的制作过程及其出现的问题
    关于360度全景照片的问题总结
    实战演练-记账本App (五)
    人月神话阅读笔记02
    实战演练-记账本App(四)
    实战演练-记账本App(三)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5065552.html
Copyright © 2020-2023  润新知