标题说是高级篇,其实也就是相对于基础篇来说的,也不是很深奥,自己平时工作中也都会用到,这里回忆的并不是特别冷门的知识,不要掉以轻心,以为“高级”就觉得工作中不会用到了。

一、select into 和 insert into select 两种表复制语句

create table <new table> as select * from <exists table>,要求目标表不存在。

insert into table2(f1,f2,...) select v1,v2,.... from table1。要求目标表table2必须存在,由于目标表已经存在,所以除了插入源表table1的字段外,还可以插入常量。

二、merge into

merge into table1

using table2

on table1和table2进行关联

  when matched then

    update set...

  when not matched then

    insert(....)values....

例如:

merge into products p using (select * from newproducts) np on (p.product_id = np.product_id)
when matched then
update set p.product_name = np.product_name where np.product_name
like 'OL%'
when not matched then
insert values(np.product_id, np.product_name, np.category) where
np.product_name like 'OL%'

三、分层查询(查出一颗树)

select * from emp
start with empno=7369
connect by prior mgr=empno

pid在前表示向上(根)查询,pid在后表示向下查询

四、分析函数(统计用)

4.1 voer

select empno,ename,job,sal,
  (sum(sal) over(order by empno)) orderSum ,--连续求和
  sum(sal) over() total,--总和
  100*round(sal/sum(sal) over(),5) perc --份额
from emp
from emp

4.2 partition 部门连续求和

select empno,ename,deptno,sal,
       sum(sal) over(partition by deptno order by empno ) dept_Order_Sum,--部门连续求和
       sum(sal) over(partition by deptno) dept_Sum--部门求和
from emp

4.3 组内排名

select empno,deptno,sal,
  row_number() over(partition by deptno order by sal desc) as "order"
from emp

4.4 rollup 在group by 的基础上再次分组(月份的小计)

select
  to_char(hiredate,'YY') HIREDATE,JOB,SUM(SAL) "SUM"   
from emp group by  ROLLUP(to_char(hiredate,'YY'),JOB)

4.5 cube函数(一直不太理解。。。)

两次分组,比如先按照月份分组,再按照区域分组,统计出工资多少。

4.6 rank函数和dense_rank函数

应用场景:排名

select
       to_char(emp.hiredate,'YY') "year",
       job,
       emp.sal,
       rank() over(partition by to_char(emp.hiredate,'YY'),job order by sal desc) "order"
from emp

假设 81年组 的 salesman 组 后面最后还有一行的sal为1240,那么排名应该是4,也就是1240这一行前面实际上是已经有4行了,但1240还是还在了第四。如果希望这一排名是5的话,那么应该用dense_rank。

4.7 row_number()函数

select
       to_char(emp.hiredate,'YY') "year",
       job,
       emp.sal,
       row_number() over(partition by to_char(emp.hiredate,'YY'),job order by sal desc) "order"
from emp

39.oracle高级篇的更多相关文章

  1. ORM查询语言(OQL)简介--高级篇(续):庐山真貌

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  2. C#高级知识点&(ABP框架理论学习高级篇)——白金版

    前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...

  3. 【.net深呼吸】动态类型(高级篇)

    前面老周给大家介绍了动态类型使用的娱乐级别用法,其实,在很多情景下,娱乐级别的用法已经满足需求了. 如果,你想自己来控制动态类型的行为和数据的存取,那么,就可以考虑用今天所说的高大上技术了.比如,你希 ...

  4. 【转载】Spark性能优化指南——高级篇

    前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...

  5. ORM查询语言(OQL)简介--高级篇:脱胎换骨

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  6. 25个增强iOS应用程序性能的提示和技巧(高级篇)(2)

    25个增强iOS应用程序性能的提示和技巧(高级篇)(2) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...

  7. 25个增强iOS应用程序性能的提示和技巧(高级篇)(1)

    25个增强iOS应用程序性能的提示和技巧(高级篇)(1) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...

  8. 【转】【技术博客】Spark性能优化指南——高级篇

    http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...

  9. Python3学习(3)-高级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...

随机推荐

  1. 大楼轮廓 · building-outline

    [抄题]: 水平面上有 N 座大楼,每座大楼都是矩阵的形状,可以用一个三元组表示 (start, end, height),分别代表其在x轴上的起点,终点和高度.大楼之间从远处看可能会重叠,求出 N  ...

  2. Linux TCP拥塞控制算法原理解析

    这里只是简单梳理TCP各版本的控制原理,对于基本的变量定义,可以参考以下链接: TCP基本拥塞控制http://blog.csdn.net/sicofield/article/details/9708 ...

  3. FasterRCNN目标检测实践纪实

    首先声明参考博客:https://blog.csdn.net/beyond_xnsx/article/details/79771690?tdsourcetag=s_pcqq_aiomsg 实践过程主线 ...

  4. Java Thread系列(二)线程状态

    Java Thread系列(二)线程状态 一.线程的五种状态 新建状态(New):新创建了一个线程对象,尚未启动. 就绪状态(Runnable):也叫可运行状态.线程对象创建后,其他线程调用了该对象的 ...

  5. 【转载】RHEL / CentOS 7 用 Yum 安裝 MySQL 5.6

    久久未更新... 换好工作出去玩耍了一趟, 现在安装机器啦~ 装一个mysql 到centos 7, 一次转载一篇文章, 记录下: 原文地址:http://www.phpini.com/mysql/r ...

  6. 关于使用 ps脚本来处理图片的排层问题

    问题是这样,在三维软件 把模型切割,给切割的部件排上序号 如 :tianji_1-431_bujian13.png 中间一段数据就是表示的 1.431 该数据之后 会到ps总排层使用 在ps排层出三维 ...

  7. BFS入门

    #include<iostream> #include<cstring> #include<queue> using namespace std; #define ...

  8. PDF Document Creation, Viewing

    [PDF Document Creation, Viewing, and Transforming] Quartz provides the data type CGPDFDocumentRef to ...

  9. C++中函数模版与类模版

    1.什么是模板? (1)可以这样来解释这个问题,例如当我们需要定义多个函数,而这个函数功能其实都是一样的,例如两个数相加的函数, 只是相加的两个数的类型不相同而已,这就导致我们需要定义多个函数:当我们 ...

  10. awk基础01-基本用法

    什么是awk     awk 是一门解释型的编程语言,支持条件判断,数组.循环等功能.可用于文本处理.输出格式化的文本信息.执行数学运算.字符串等操作.     awk在处理文件时按行进行逐行处理,即 ...