zoukankan      html  css  js  c++  java
  • oracle 分组函数执行分析

    先上例了:

    select job as "JOB1", avg(sal) as "avg sal" from scott.emp
        group by  "JOB"
        having avg(sal) > 1500 and "JOB1" = 'MANAGER'
        order by "avg sal"
    ;
    -- 执行报错,ORA-00904:"JOB1":标识符无效
    
    
    select job as "JOB1", avg(sal) as avg_sal from scott.emp
        group by job
        having avg(sal) > 1500 and job = 'MANAGER'and DEPTNO=20
        order by  2;
    -- 执行报错,ORA--00979:不是GROUP BY表达式
    
    

    oracle执行顺序:先过滤一般条件(where), 再进行分组(group),然后对分组执行组函数,同时进行组函数过滤(having),最后对得到的数据排序显示。
    注意:

    • where 分组前过滤、having是分组后过滤;
    • having通过过滤分组函数结果来筛选内容;
    • having也不可以接分组函数的别名;
    • having中的条件必须是group by的表达式,即在分组中出现过;
    • having和group by都不可以接列的别名
    • having是对group分组后的内容进行过滤,group不能接列别名、having也不能接列别名
  • 相关阅读:
    [HDU] 2084 数塔 入门dp
    一些实用的小技术,不定时更新^_^
    上传图片的综合验证
    一个典型web接口处理
    js控制背景音乐播放
    心开始平和起来
    冲突域广播域
    可怜的我的啊~~
    祈祷
    昨夜小楼又东风...
  • 原文地址:https://www.cnblogs.com/hyang0/p/10609158.html
Copyright © 2011-2022 走看看