oracle笔记整理7——with as、case when、merge into、分析函数over()
来源:互联网 发布:软件架构图分类 编辑:程序博客网 时间:2024/06/06 07:17
1) with as
a) WITH AS短语,也叫做子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句所用到。
b) 当查询中多次用到某一部分时,可以用Oracle with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。
c) 应用:需多次调用;union all中;
d) 示例
with sql1 as (select s_name from test_tempa), sql2 as (select s_name from test_tempb where not exists (select s_name from sql1))select * from sql1union allselect * from sql2union allselect 'no records' from dual where not exists (select s_name from sql1 where) and not exists (select s_name from sql2);
2) case when
a) 简单case语句
select case to_char(sysdate,’d’) when ‘1’then ‘周日’when ‘2’ then ‘周一’ else ‘不知道’end from dual;
b) 搜索case语句
SELECT count(col3), sum(CASE WHEN col3 = 1 THEN 1 ELSE 0 END) , sum(CASE WHEN col3 = 2 THEN 1 ELSE 0 END) FROM table_name;
c) where case when 用法
SELECT T2.*, T1.* FROM T1, T2 WHERE (CASE WHEN T2.col2 = 'A' AND T1.col3 = 'B' THEN 1 WHEN T2.col2 != 'A' AND T1.col3 != 'B' THEN 1 ELSE 0 END) = 1
d) group by case when 用法
SELECT CASE WHEN col2 = '05' THEN '1' WHEN col2 = '23' THEN '2' ELSE NULL END "类别",COUNT(*) FROM table_nameGROUP BY CASE WHEN col2 = '05' THEN '1' WHEN col2 = '23' THEN '2' ELSE NULL END;
3) merge into
在oracle 11g中有如下特点
a) update和insert子句时可选的。
b) update和insert子句可以加where子句
merge into table_a ausing table_b bon (a.id = b.id)when matched then update set a.name = b.name where ……when not matched then insert values (a.id,a.name) where ……
4) 分析函数over()
a) ROW_NUMBER(),不允许并列名次、相同值名次不重复,结果如123456……
b) RANK(),跳跃排序,允许并列名次、复制名次自动空缺,结果如12245558……
c) DENSE_RANK(),允许并列名次、名次不间断,结果如122344456……
d) 例子:
select * from (selelct row_number() over(partition by xxx2 order by xxx3 ) rw from dual)tt where tt.rw = ?;
0 0
- oracle笔记整理7——with as、case when、merge into、分析函数over()
- 转载with as、case when、merge into、分析函数over()
- ORACLE分析函数over(partition by...)中使用case when达到多重分组的效果
- ORACLE分析函数over(partition by...)中使用case when达到多重分组的效果
- Oracle 中 merge into when 的用法分析。
- Oracle笔记--分析函数over
- oracle——分析函数OVER ()
- oracle分析函数——over
- oracle的case when函数
- oracle中merge into..using..on..when..when..用法
- oracle中merge into..using..on..when..when..用法
- Oracle 分析函数over
- Oracle 分析函数 over()
- oracle 分析函数over
- ORACLE over()分析函数
- oracle 分析函数 over
- oracle 分析函数over
- oracle 分析函数over
- Qt XML 使用QxmlStreamReader的使用的步骤和方法
- Apache 学习-环境配置
- lua脚本语言的学习-----------------如何实现c++无参数的函数在lua中调用
- 考试系统(超简版)-----大二上java课程设计
- 24点游戏--java打开方式
- oracle笔记整理7——with as、case when、merge into、分析函数over()
- 《OpenResty Notes》2016年第01期
- 仿荷包动画
- java中String类比较常用的方法
- sendAsynchronousRequest 过时
- Android IPC机制(二)用Messenger进行进程间通信
- 【1-1】Linux配置网络IP的方式【及如何上网】
- 两个数组匹配处理2016.01.02
- 六款值得推荐的android(安卓)开源框架简介