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对行组进行过滤。
oracle中简单查询语句的格式及执行顺序分析的更多相关文章
- Oracle中分页查询语句
Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.O ...
- oracle中sql查询语句的执行顺序
查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入 ...
- oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)
--查出所有现金中心的单位IDwith AllUnitas(select t.ORGANIZATIONID orgid,t.parentidfrom CDMS_ORGANIZATION t where ...
- Oracle中分页查询语句的写法
要动态的变化分页查询的条件,比如pageNow 这个变量表示的是当前是第几页, oracle分页有通用写法,假设一页5行 select * from ( select t.*,rownum rn fr ...
- 如何在Oracle触发器中使用查询语句
通常情况下,Oracle数据库禁止在行级触发器或行级触发器所调用的子程序中使用查询语句.但是,面对复杂的业务逻辑,不可避免的要使用查询语句. 当在行级触发器中使用查询语句时,Oracle数据库会抛出O ...
- Oracle的分页查询语句优化
Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一) 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT ...
- oracle 中对查询出来的数据进行切割、截取等操作
oracle 中对查询出来的数据进行切割.截取等操作 最近遇到一个问题,需要把一个带有,的字符串拆分成多行.通过查询资料,这个操作需要使用以下2个关键知识: 1. REGEXP_SUBSTR函数 这个 ...
- Apps: Help > Diagnostics > Custom Code > Personalize 查看LOV中的查询语句
Apps Menu Path: Help > Diagnostics > Custom Code > Personalize 查看LOV中的查询语句 一直有实施顾问询问我XXFo ...
- T-SQL简单查询语句(模糊查询)
T-SQL简单查询语句 简单查询: 1.最简单查询(查所有数据) select * from 表名: 注:* 代表所有列 select * from info 2.查询指定列 select code, ...
随机推荐
- scala学习笔记-集合
变长数组:数组缓冲 Scala中对于那种长度会变的数组的数据结构为ArrayBuffer. import scala.collection.mutable.ArrayBuffer; // 一个空的数组 ...
- Swift 循环、数组 字典的遍历
import Foundation // 数组声明 var arr = [String]() // 数组循环添加项 ...{ arr.append("Item \(index)") ...
- dubbo No provider available for the service com.alibaba.dubbo.monitor.MonitorService from registry
No provider available for the service com.alibaba.dubbo.monitor.MonitorService from registry http:// ...
- Python新手学习基础之运算符——成员运算与身份运算
成员运算符 Python里有成员运算符,可以判断一个元素是否在某一个序列中.比如可以判断一个字符是否属于这个字符串,可以判断某个对象是否在这个列表中等等. Python中的成员操作符的使用语法是: o ...
- hdu 2019
Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input 输入数据包含多 ...
- LINUX 循环fork()
#include <sys/types.h> #include <unistd.h> int main() { for(int i = 0; i < ...
- Android退出程序
public class ExitApplication extends Application { private static ExitApplication instance ; List< ...
- iOS开发:自定义tableViewCell处理的问题
还在适配iOS6,索性下一个版本不适配了~~~~~ 问题: *** Assertion failure in -[ PCDiaryDetailReplyCell layoutSublayersOfLa ...
- 单片机串口通讯RXD与TXD如何对接详解
相信很多人都对单片机与计算机或者芯片通信时,RXD与TXD如何连接比较困惑.因为在一些电路图中,有的是直连接法,有的是交叉接法,让人有点摸不着头脑. 首先需要明白两个概念,就是DTE和DCE.DTE是 ...
- MySQL常用Json函数
官方文档:JSON Functions Name Description JSON_APPEND() Append data to JSON document JSON_ARRAY() Create ...