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高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...
随机推荐
- MySQL之记录相关操作
一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...
- 强大的scrollReveal库,炫酷的页面缓入效果。
首先我问来看一下这个强大的插件能做出什么效果,下面是我找的一个网站: http://kepler.gl/#/, 接下来看看官网给出的效果:https://scrollrevealjs.org/. 是不 ...
- Java list 转字符串并加入分隔符的方法
import org.apache.commons.lang.StringUtils; List<String> list=new ArrayList<String>(); l ...
- .Net Core应用框架Util介绍(二)
Util的开源地址 https://github.com/dotnetcore/util Util的开源协议 Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util ...
- SQL的一些基础查询语法
基础.限定.模糊查询 关键字都是大写. 使用 BETWEENN AND 的时候小的数字或者日期放到 AND(并且) 的面前,大的一个放到AND 后面. 数据操纵语言SQL分类(DML ...
- 一个.net的程序员如何转到java的?
先说明,大佬请忽略我这篇文章, 我是一个做了5年的纯种C#开发人, 我在此仅记录一下我转java的过程.都知道, java是开源的,所以它的开发工具贼多,不像.net, 直接地表最强的IDE. 像现 ...
- tomcat 启动窗口乱码
在tomcat主目录下的conf文件夹里,找到logging.properties文件: 用记事本打开,找到以下内容 java.util.logging.ConsoleHandler.encoding ...
- Linux--虚拟环境
一 . 虚拟环境的安装 如果我们在进行多个django项目的话,只用一个物理环境的话,那么会影响效率,这时候我们局可以应用虚拟环境了 virtualenv #指定清华源下载pip的包 pip3 ins ...
- debugfs
http://www.cnblogs.com/wwang/archive/2011/01/17/1937609.html
- QTP自动化测试-打开运行报告
automation菜单下-点击 result