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)

相关推荐

  • Ubuntu 彻底卸载 MySQL 数据库[亲测有效]

    Ubuntu 彻底卸载 MySQL 数据库[亲测有效]
    Ubuntu 18.04 彻底卸载MySQL 5.7.31 1. 查看MySQL的依赖项 dpkg –list|grep mysql 2. 卸载 mysq…

    2023-04-07
    130
  • 使用Python编辑器

    使用Python编辑器Python是一种动态的、跨平台的编程语言,广泛应用于Web开发、人工智能、数据科学、系统运维等领域。而Python编辑器则是编写和运行Python代码的工具。Python编程的初学者通常使用集成开发环境(IDE)来编写和调试Python代码。IDE通过在单个应用程序中集成多种工具来提高生产力,包括代码编辑器、调试器、版本控制、自动编辑和构建工具等。Python编辑器的选择非常丰富,可以根据个人喜好和使用场景选择合适的工具。那么在这篇文章中,我们将为您介绍如何使用Python编辑器来更高效地进行编程和开发。

    2024-06-18
    29
  • sqlserver环境变量配置_windows汇编集成环境

    sqlserver环境变量配置_windows汇编集成环境如果想要一边执行 SQL 语句一边学习,就必须有数据库作为 SQL 语句的执行环境。本文将介绍开源数据库 PostgreSQL(版本 9.5.3 1)在 Windows 环境下的安装方法。已经安装了执

    2023-04-26
    119
  • 堆栈内存及代码执行步骤

    堆栈内存及代码执行步骤堆栈内存及代码执行步骤 JavaScript运行的环境: 浏览器 node.js webview WebApp(Hybride混合App) 浏览器能够运行JavaScript代码,是因为提供了代码的运

    2023-11-16
    105
  • 巨杉数据库怎么样_分布式数据库开发

    巨杉数据库怎么样_分布式数据库开发随着企业应用的类型不断拓展,在海量数据、高并发、多类型数据的应用场景下,底层数据平台对于混合数据类型、混合业务场景处理能力的要求不断扩大,这就催生了 HTAP(混合事务和分析处理)的需求。 新一代分…

    2023-03-19
    139
  • MYSQL数据库重新初始化「建议收藏」

    MYSQL数据库重新初始化「建议收藏」前言 我们在日常开发过程中,可能会遇到各种mysql服务无法启动的情况,各种百度谷歌之后,依然不能解决的时候,可以考虑重新初始化mysql。简单说就是重置,“恢复出厂设置”。重置之后,所有的数据都将被

    2023-04-17
    143
  • python获取当前进程id(获取当前进程的所有线程)

    python获取当前进程id(获取当前进程的所有线程)#-*- encoding:UTF-8 -*-

    2023-11-22
    104
  • 新特性解读 | MySQL 8 复制延迟观测新方式,更全面更精准

    新特性解读 | MySQL 8 复制延迟观测新方式,更全面更精准转载自公众号:玩转MySQL,作者:洪斌 一直以来 MySQL 复制延迟观测是不完善的,既无法观测到真实的主从延迟,也无法支持复杂的复制拓扑环境,常用的 second_behind_master 指…

    2023-02-02
    119

发表回复

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