`
sujianchinaouya
  • 浏览: 56177 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 高级SQL查询笔记12-01

 
阅读更多

<!-- [if !mso]> <style> v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

0 coalesce 函数的用法?

COALESCE(A,B,C,D) AS 别名
返回参数表中第一个不为空的值( 从左开始)
A B C D
可以是字段, 也可以是其他函数的返回值或者表达式的结果值

1group by rollup 的用法。

Oracle 数据库中的rollup 配合group by 命令使用,可以提供信息汇总功能(与" 小计" 相似)

示例如下:

select decode (job, '' , ' 合计 ' , job) job,

decode (empno, '' , ' 小计 ' , 'empno' ) empno,

sum (sal)

from emp

group by rollup (job, empno)

可以看出:

用了 rollup group by 子句所产生的所谓的超级聚合就是指在在产生聚合时会从右向左逐个对每一列进行小结,并在结果中生成独立的一行,同时也会对聚合列生成一个合计列。

例如在 scott 用户下面有一个 emp 表:
select deptno,job,sum(sal) from emp group by deptno,job;

会对每一个不同的 dept,job 生成一行独立的结果。


select deptno,job,sum(sal) from emp group by rollup(deptno,job);
的结果中除了上述的结果结果之外,还会对每一个 deptno 进行一个小结,并单独生成一行,除此之外还会对所有的 sal 求和并生成一列。

2 having 字句的用法详解?

select job, sum (sal) from emp group by job

having sum (sal)> 5000

在这里,我们不能用 where 来筛选超过 5000 的薪水,因为表中不存在这样一条记录。

相反, HAVING 子句可以让我们筛选成组后的各组数据

3

rollup 从右往左再聚合 用法和 1 一样。

cube 从左往右取

1 :: grouping sets 用法???????

分别求统计,再 union

分别求统计,再 union

select id , num , sum (age) from users group by grouping sets (( id ),( num ))

select id , num , sum (age) from users group by rollup (( id , num ));

SELECT A, B, C, 

SUM( D )
FROM t
GROUP BY GROUPING SETS 

( A, B, C )
等价于:

SELECT * FROM (
 ( SELECT A, NULL, NULL, SUM( D )
FROM t GROUP BY A )
 
UNION ALL
 ( SELECT NULL, B, NULL, SUM( D )
FROM t GROUP BY B )
 
UNION ALL
 ( SELECT NULL, NULL, C, SUM( D )
FROM t GROUP BY C )
)

成对的进行比较

select student_id,teacher_id,class_id from students

where (teacher_id,class_id) in ( select teacher_id,class_id from students where student_id in

( 222 , 332 ))

from 中使用子查询 , 注意要加上别名

select a.empno,a.ename from emp a,( select b.empno,b.sal from emp b) c where

c.empno=a.empno

1 exists , not exists in 的效率问题?

select t1.job from emp t1 where exists ( select t2.job from emp t2 where t2.job like '%T%' );

-- T1 的数据量小而 T2 的数据量大的时候使用,查询的效率比较高。

select T1.job from emp T1 where T1.JOB IN ( select T2.job from emp T2 where T2.job like '%T%' );

-- T1 的数据量非常大二 T2 的数据量小的时候 ,查询的效率比较高。

Not in not exit 的效率问题?

数据库:oracle

数据量:52000 条记录

not existsnot in 执行的效率要高的多


select * from quyu_t a where a.version='256' and not exists(select 'x' from quyu_t_his b
where a.username=b.username);

------- not in 效率低

select * from quyu_t where username not in (select username from quyu_t_his)

2 个一比较简直是太明显了

10 oracle rank() 函数总

首先 , 要了解 rank 在英语的意思 : 等级 . 也就是说这是一个给数据确定等级的函数 .

rank() 对表中的数据进行分级排序 .

例如:

select e.ename,e.job,e.mgr,e.sal,

rank ( ) over ( PARTITION by e.job order by e.sal desc ) rank1

from emp e

执行结果图如下:

意思就是先按照 job 进行分级。 job 的每一个级别的数据进行排序。可以出现同一等级。

比如 analyst 都是并立第一则 rank1 都为 1 在每一个级别里边在按照 order by 进行排序。比如 clerk rank1 分别就是 1,2,3,4.

如果要去每一个分组里的第一名的话则如下得到 SQL

select * from (

select e.ename,e.job,e.mgr,e.sal,

rank ( ) over ( PARTITION by e.job order by e.sal desc ) rank1

from emp e

) where rank1= '1'

效果如下:

这样 rank1 就取出每一个里边是第一个名的数据。重复的也存在。

分享到:
评论

相关推荐

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    《Pro Oracle SQL》 读书笔记--Chapter 6--6.2 Execution Plans--之四

    《Pro Oracle SQL》是Oracle数据库查询优化的经典之作,第六章主要聚焦在Execution Plans(执行计划)上,这是数据库查询性能优化的关键。本章节的第四部分深入探讨了如何理解和解析执行计划,以及它对SQL性能的影响...

    oracle_sql笔记

    Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的...这两份“Oracle SQL笔记”文档应包含了上述各个方面的详细解释和实例,值得仔细阅读和学习。

    最全的ORACLE-SQL笔记

    【Oracle SQL笔记详解】 Oracle SQL是用于访问和操作Oracle数据库的强大工具,涵盖了各种查询、更新和管理数据的方法。以下是对笔记中提及的一些关键知识点的详细解释: 1. **登录Oracle数据库**:通常以超级管理...

    李兴华ORACLE笔记[2014-8-11]

    这份笔记涵盖的内容可能包括Oracle数据库系统的各个方面,如数据库管理、SQL查询优化、存储结构、性能调优、故障排查等关键知识点。 首先,Oracle数据库管理系统是全球广泛使用的大型关系型数据库之一,尤其在企业...

    oracle数据库sql-笔记.zip

    以思维导图的形式(xmind),呈现oracle数据库知识点.包括(集合操作,处理语句,约束,链接,运算符。函数,表达式,聚合函数,子查询,分组查询,分页查询,视图,序列等)以及数据库的整体框架,以便你更好的学习...

    OracleSQL笔记

    ### Oracle SQL 笔记知识点详解 #### 一、SQLPlus 命令及环境变量 Oracle_sid - **SQLPlus 命令位置**:在 Oracle 安装目录下的 `bin` 文件夹中,可以通过 SQLPlus 来执行 SQL 命令。 - **Oracle_sid 环境变量**:...

    oracle sql 读书笔记

    sql fundament 读书笔记 oracle 原厂 培训 金领DBA

    Oracle 10g sql 学习笔记

    Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...

    Oracle SQLServer数据库 学习笔记

    Oracle和SQL Server是两大主流的关系型数据库管理系统,广泛应用于企业级的数据存储和处理。这篇学习笔记将深入探讨这两个系统的概念、特性和应用。 一、Oracle数据库系统 Oracle数据库是由甲骨文公司开发的一款...

    oracle-SQL笔记

    Oracle SQL是用于管理和操作Oracle数据库的关键工具,涵盖了数据查询、数据操纵、数据定义以及数据控制等多个方面。在本文中,我们将深入探讨Oracle SQL中的数据控制语句(DCL)、数据定义语句(DDL)以及一些基本的...

    java笔记\Oracle里sql不能用limit的处理

    Java笔记--Oracle中SQL不能用Limit的处理 在Java开发中,我们经常需要对数据库进行分页查询,但是Oracle数据库不支持Limit关键字,那么如何在Oracle中实现分页查询呢?下面,我们将详细介绍Oracle中SQL不能用Limit...

    Oracle 10g 学习笔记

    这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...

    Mastering_Oracle_SQL学习笔记

    通过系统学习《Mastering Oracle SQL学习笔记》中的这些章节,初学者不仅能够掌握Oracle SQL的基本操作,还能深入了解高级查询技巧和数据库管理的最佳实践,从而成为一名熟练的Oracle数据库管理员或数据分析师。

    oracle 数据库 SQL学习笔记

    Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。

    Oracle_SQL学习笔记

    ### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...

    oracle学习笔记--言简意赅

    ### Oracle学习笔记精要 ...以上是Oracle学习笔记中的关键知识点总结,涵盖了SQLPLUS的基本命令、SQL语句的结构、SELECT语句的使用技巧等多个方面,旨在帮助初学者快速掌握Oracle数据库的基础操作和查询技术。

    Oracle SQL笔记.pdf

    根据提供的文件信息,我们可以归纳出一系列重要的Oracle SQL知识点,这些知识点涵盖了从基本的SQL概念到高级的数据库管理技术。下面是对这些知识点的详细说明: ### 1. SQL介绍 #### 结构化查询语言 (Structured ...

Global site tag (gtag.js) - Google Analytics