Oracle 关键字、高级函数的使用
1.序列、唯一标识
查询时,可以添加递增序列 rownum
表的数据每一行都有一个唯一的标识 rowid

2.函数
单行:查询多条数据
如:to_date()
多行:查询总结数据,一般用于group by
如:sum()
3.去重 distinct
select distinct from tablename
4.分区 partition
select tenantcode,row_number() over(partition by tenantcode order by tenantcode, brandcode, storecode ) groupid
from tablename

若要分区筛选出id=1的,可以
select * from(
select tenantcode,row_number() over(partition by tenantcode order by tenantcode, brandcode, storecode) groupid
from tablename
)
where groupid=
row_number为直接排序,还可以替换成以下函数
rank(): 跳跃排序,如果有两个第一级时,接下来就是第三级。
dense_rank(): 连续排序,如果有两个第一级时,接下来仍然是第二级。
5.行列转换
模拟表
With t as (
Select id,'桃子' name, q1, q2, q3, q4 from dual
Union
Select id,'苹果' name, q1, q2, q3, q4 from dual
Union
Select id,'西瓜' name, q1, q2, q3, q4 from dual
)

列转行
Select * from t unpivot(nums for jidu in (q1,q2,q3,q4)) order by id;

行转列
With t as (
Select id,'桃子' name, q1, q2, q3, q4 from dual
Union
Select id,'苹果' name, q1, q2, q3, q4 from dual
Union
Select id,'西瓜' name, q1, q2, q3, q4 from dual
),
bb as(
Select * from t unpivot(nums for jidu in (q1,q2,q3,q4)) order by id
) Select * from bb pivot(max(nums) for jidu in ('Q1' Q1,'Q2' Q2,'Q3' Q3,'Q4' Q4)) --这里的max是如果有多行,选择最大,比如桃子有两个Q1

6.null值置顶或垫底
select * from langmap order by lang4 nulls first/last
6.存在则更新,不存在则新增
merge into v5_tenant_repair_appl_follow f
using (select '' ra_id,'test' ra_staffcode from dual) n
on(f.ra_id=n.ra_id)
when matched then
update set f.ra_staffcode=n.ra_staffcode
when not matched then
insert values(n.ra_id,n.ra_staffcode)
7.占比
select a.ra_id,a.ra_charge,
ratio_to_report(a.ra_charge) over() pct
from v5_tenant_repair_appl a
pct表示该行的ra_charge所占比例
over():可以用参数 partition by [字段] 进行分组,从而查询分组后ra_charge所占比例
8.选择第一个非空数据
select coalesce(null,null,,null) from dual;
9.字节替换
select translate('ab123', 'abcdefg123', '3456789abc') from dual;
第一个参数:输入的字符串
第二个参数、第三个参数:替换规则,字节按顺序一一对应替换
上式代码结果:34abc
Oracle 关键字、高级函数的使用的更多相关文章
- oracle 高级函数2
原 oracle 高级函数 2017年08月17日 16:44:19 阅读数:1731 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013278 ...
- oracle 高级函数
原 oracle 高级函数 2017年08月17日 16:44:19 阅读数:1731 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013278 ...
- Oracle各种连接函数总结
1.前言 Oracle可用连接函数会介绍以下几个 Oracle列转行函数 Listagg() strcat() wmsys.wm_concat() 2.Oracle列转行函数 Listagg() 2. ...
- Oracle过程及函数的参数模式,In、out、in out模式
Oracle过程及函数的参数模式 In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: ( ...
- ORACLE 常用字符函数
ORACLE 常用字符函数1 ASCII(arg1)返回参数arg1的十进制数字表示.如果数据库设置为ASCII,则采用的是ASCII码字符.如果设置为EBCDIC,则采用的是EBCDIC字符 sel ...
- oracle的nvl函数的使用解析
Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpre ...
- oracle常用高级sql---1
Oracle/Sql高级篇 1.TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. SELECT TOP number|percen ...
- ORACLE当中自定义函数性优化浅析
为什么函数影响性能 在SQL语句中,如果不合理的使用函数(Function)就会严重影响性能,其实这里想说的是PL/SQL中的自定义函数,反而对于一些内置函数而言,影响性能的可能性较小.那么为什么SQ ...
- SQL入门(2): Oracle内置函数-字符/数值/日期/转换/NVL/分析函数与窗口函数/case_decode
本文介绍Oracle 的内置函数. 常用! 一. 字符函数 ASCII 码与字符的转化函数 chr(n) 例如 select chr(65) || chr(66) || chr(67) , ch ...
- Oracle SQL高级编程——分析函数(窗口函数)全面讲解
Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...
随机推荐
- idea maven无法热布署exploded
(原) 有时,你的idea可能会偶尔出现点小问题,特别是在用maven的时候,以前可以用的热布署发现没有了.就像这样: 少了一个选项,并且下面会有一个提示,no artifacts configure ...
- Asp.Net WebApi 使用OWIN架构后,出现 “没有 OWIN 身份验证管理器与此请求相关联(No OWIN authentication manager is associated with the request)” 异常的解决办法
在Asp.Net WebApi 项目中使用OWIN模块之后,如果没有在OWIN的Startup类中配置认证方式,调用WebApi的相关Controller和Action就会出现如下异常: 出现错误. ...
- Linux内存管理 (15)页面迁移
专题:Linux内存管理专题 关键词:RMAP.页面迁移. 相关章节:反向映射RMAP.内存规整. 页面迁移的初衷是为NUMA系统提供一种将进程迁移到任意内存节点的能力,后来内存规整和内存热插拔场景都 ...
- 这段代码,c 1秒,java 9秒,c# 14秒,而python。。。
哎,不得不说最近见得键盘侠客太多了,做程序员没两天总是喜欢上嘴唇触天,下嘴唇碰地的吹. 自己分明都没用过几门语言,就对各门语言评头论足说三道四,这么语言多好那门语言有多烂. 可能是随着时间也变得没那么 ...
- TypeError: 'Item' object has no attribute '__getitem__'
Error Msg: Traceback (most recent call last): File "start.py", line 8, in <module> E ...
- SyntaxError: missing ) after argument list
消息 语法错误: 参数列表后面缺少 ) 错误类型 SyntaxError. 什么地方出错了? 有一个函数在调用时出现错误.这可能是一个错误,丢失运算符或者转义字符等. 示例 因为没有使用 ”+“ 操作 ...
- Java基础:Java变量、数据类型、运算符(2)
1. 标识符和关键字 1.1 标识符 标识符是用来标识类名.对象名.变量名.方法名.类型名.数组名.文件名的有效序列. Java规定,标识符由字母.数字.下划线“_”.美元符号“$”组成,并且首字母不 ...
- CentOS下添加Root权限用户(超级用户)方法
1.添加普通用户[root@server ~]# useradd chenjiafa //添加一个名为chenjiafa的用户[root@server ~]# passwd chenjiafa ...
- Linux 学习 (三) 文件搜索命令
Linux达人养成计划 I 学习笔记 locate 文件名 搜索速度比较快 只能根据文件名搜索 搜索的是保存在 /var/lib/mlocate 的数据库(每天更新一次) 新建文件需要执行 updat ...
- mysql如何直接查出从1开始递增的数
比如我的一个sql语句 SELECT nick_name FROM t_user ; 得到的结果是:张三李四王五 而现在我想要的结果是:1 张三2 李四3 王五 应该如何写sql呀? 答案就是用 @r ...