Oracle · 一些实用语法

Oracle · 一些实用语法Connect By … Prior树查询条件,Prior 代表上级的值 Over … Partition By 分组查询 · row_number() : 排到多少是多少,1 2 3 4 5 … 排下去

Merge 混合/合并

实现功能:当记录匹配时,更新数据,不匹配时,插入数据

Merge into table1 t1    -- 混入table1
using table2 t2         -- 用来对比的表
    on (t1.id = t2.id)      -- 对比条件
when matched then       -- 如果 匹配
    update set t1.name=t2.name
when not matched then   -- 如果 不匹配
    insert values(t2.id,t2.name)
    
## 存在这样两张表 
>>> table1
ID  |  NAME
----|-----------
 1  |  LUE
 2  |  Mark1
 
>>> table2
ID  |  NAME
----|-----------
 2  |  Mark2
 3  |  Care
 
# 执行后 table1
 ID |  NAME
----|-----------
 1  |  LUE
 2  |  Mark2
 3  |  Care

Minus 差集

实现功能:取表1内和表2不同的数据

select * from table1 
minus
select * from table2

## 存在这样两张表 
>>> table1
ID  |  NAME
----|-----------
 1  |  LUE
 2  |  Mark1
 
>>> table2
ID  |  NAME
----|-----------
 2  |  Mark1
 3  |  Care
 
# 查询结果为 
 ID |  NAME
----|-----------
 1  |  LUE

Intersect 交集

实现功能:两表取交集

select * from t_table1    
INTERSECT
select * from t_table2 

>>> table1
ID  |  NAME
----|-----------
 1  |  LUE
 2  |  Mark1
 
>>> table2
ID  |  NAME
----|-----------
 2  |  Mark1
 3  |  Care
 
# 查询结果为 
 ID |  NAME
----|-----------
 2  |  Mark1

With

with newtable as
(
select 1 ,' lue ' name from dual
)
select * from newtable


# 查询结果为 
 ID |  NAME
----|-----------
 1  |  lue

Start With 树查询

几个单词:
Start With:开始条件
Connect By … Prior树查询条件,Prior 代表上级的值

Select * From tablename     -- 查询表
[Where ...]                 -- 满足条件的
Start With ID = '00001'     -- 从ID = ‘00001’ 开始
Connect By Prior ID = PID   -- 上级(Prior)的ID = 本级的PID(或者其他什么条件)

Over … Partition By 分组查询

根据 partition by 进行分组 ,组内 order by 排序

select rank() over(partition by t.class order by t.sroce desc) mm from T2_TEMP t

括号内的 partition by 、order by 之类的都可以省略,不会报错,根据业务要求各种拼接

row_number()、rank()和dense_rank() 排序号

· row_number() : 排到多少是多少,1 2 3 4 5 … 排下去
· rank():排序时,如果相同的项会序号相同,例如:

31 、 32 、 32 、 33 、 34
# 排序后,序号为
1 2 2 4 5

· dense_rank():排序时,如果相同的项会序号相同,和rank()区别在与 他是连续的,例如:

31 、 32 、 32 、 33 、 34
# 排序后,序号为
1 2 2 3 4

first_value() 和 last_value() 第一行/最后一行

# srocetable 学生分数表
# name 姓名
# class 班级
# sroce 分数

# 查询 每个班 成绩最高 的 学生的姓名
select first_value(name) over(partition by class order by sroce desc) from srocetable # 查询 每个班 成绩最低 的 学生的姓名 select last_value(name) over(partition by class order by sroce desc) from srocetable 

同理其他

count() 求分组后的总数
max() 求分组后的最大值
min() 求分组后的最小值
avg() 求分组后的平均值
lag() 取出前n行数据
lead() 取出后n行数据
ratio_to_report() 括号中就是分子,over() 括号中就是分母 (等同于 当前括号内的分子 / 分组内该列的总和) percent_rank() 百分比排名 意思是 能排到整体的百分之多少 (等同于 排名 / 总人数 )

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12406.html

(0)

相关推荐

  • 使用Python创建自我意识的Tulpa

    使用Python创建自我意识的TulpaTulpa起源于西藏佛教,意为“创造的东西”,指通过冥想和意识投射创造出来的意识体。Tulpa会在人脑中形成一种自主思考与行动的“分身”,具有独立思考的能力,可以与创造它的人进行交流和互动。

    2024-01-16
    110
  • redis hash的底层实现_数据结构哈希查找

    redis hash的底层实现_数据结构哈希查找1. Redis 底层数据结构 Redis数据库就像是一个哈希表,首先对key进行哈希运算得到哈希值再取模得到一个下标,每个元素是一个节点,节点之间形成链表。这感觉有点像Java中的HashMap。

    2023-05-28
    138
  • java架构师学习路线-MongoDB数据库详解「终于解决」

    java架构师学习路线-MongoDB数据库详解「终于解决」 图灵学院 java架构师学习路线 相信每个软件程序员对数据库这个名词都不陌生吧,今天就由我为大家总结大家生活中最常用到的MongoDB,可能有许多软件专业的学生都没听过这个词,MongoDB…

    2023-03-29
    159
  • 数据库 数仓_数仓是什么

    数据库 数仓_数仓是什么摘要:通常在运维监控出现CPU使用率较高、P80/P95指标较高、慢SQL数量上升等现象,或者业务出现超时报错时,优先应排查是否出现慢SQL。 本文分享自华为云社区《GaussDB慢SQL常见定位处理

    2023-06-12
    143
  • mysql索引优化有几种_如何优化索引

    mysql索引优化有几种_如何优化索引导读 本文章始发于本人公众号:码猿技术专栏,原创不易,谢谢关注推荐。 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。 在不使用

    2023-02-11
    149
  • Python 符号大全

    Python 符号大全Python 是一种面向对象的、解释型的计算机编程语言。它具有简单易学、代码可读性高、功能强大、可移植性好等特点。开发者可以在 Python 中使用大量的符号和语法操作,让程序的编写更加高效和方便。

    2024-06-19
    43
  • 基于android的视频播放器的设计与实现_安卓mvvm框架

    基于android的视频播放器的设计与实现_安卓mvvm框架前言: 前面几篇文章我们封装了几个组件化功能组件: 包括:网络请求组件,图片加载请求组件,应用保活组件,音乐播放组件封装。 组件化相关系列文章: Android组件化开发(一)Maven私服的搭建

    2023-08-08
    135
  • dnf名誉(dnf名)

    dnf名誉(dnf名)

    2023-08-31
    123

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注