zoukankan      html  css  js  c++  java
  • oracle中简单查询语句的格式及执行顺序分析

    一条简单的查询sql格式如下:

      SELECT ...

      FROM ....

      [WHERE ...] --过滤单行

      [GROUP BY ...   [HAVING ...]]--GROUP BY对前面where条件过滤后的结果进行分组,HAVING过滤行组

      

      [ORDER BY ...]--对结果进行排序

    eg: 现在有个exchangetime表,表结构如下

      名称                                            是否为空? 类型
     ----------------------------------------------- -------- --------------------------------
     ID                                              NOT NULL NUMBER(18)
     SYSTEM_TYPE                                     NOT NULL CHAR(1)
     TIME_KIND                                       NOT NULL NUMBER(10)
     TIME_NAME                                       NOT NULL VARCHAR2(16)
     BEGIN_TIME                                      NOT NULL NUMBER(10)
     END_TIME                                        NOT NULL NUMBER(10)

    查询语句及结果如下:

    SQL> list  

       1     select t.system_type, avg(t.begin_time) from exchangetime t

         2     where t.id < 10  

            3     group by t.system_type  

            4     having avg(t.begin_time)>110000  

            5*    order by system_type

    SQL> /

    SYSTEM_TYPE  AVG(T.BEGIN_TIME)

    ------------ -----------------

    0                       110750

    1                       150000

    SQL> spool off

    在上面这个查询语句中where t.id < 10 先对exchagetime中的记录进行过滤,过滤后的行由group by 按照system_type进行分组,接着having子句对行组进行过滤,只保留avg(t.begin_time)>110000的行,最后order by语句按照system_type字段将结果进行升序排列,得到最终结果。

    ps: 1、group by 后面可以不接having,但是如果有having子句的话必须与group by 语句结合使用

          2、where子句只能对单行进行过滤而不能过滤行组,过滤行组必须使用having子句,如where avg(t.begin_time)就是错误的。必须像上面的语句一样用having对行组进行过滤。

      

  • 相关阅读:
    工作流学习——Activiti流程变量五步曲
    Rational Performance Tester(RPTv8.6) 在launch Schedule 时一直卡在 29%
    19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
    【设计模式】责任链模式
    redis源代码分析(5)——aof
    Servlet基础梳理(四)
    SQL-W3School-高级:SQL 数据类型
    SQL-W3School-高级:SQL NULL 函数
    SQL-W3School-高级:SQL NULL 值
    SQL-W3School-高级:SQL Date 函数
  • 原文地址:https://www.cnblogs.com/tarbitrary/p/3989273.html
Copyright © 2011-2022 走看看