Oracle学习笔记:高级查询
来源:互联网 发布:mysql root密码忘记 编辑:程序博客网 时间:2024/04/30 11:40
topN查询
select * from emp where rownum=1 or rownum=2;select * from (select * from emp order by sal desc) where rownum<5;
分页查询
-
select * from (select rownum no,e.* from(select * from emp order by sal desc) e where rownum<=5) where no>=3;
-
select * from (select rownum no,e.* from(select * from emp order by sal desc)e) where no>3 and no<=5;
exist
select * from t1 where exists (select null from t2 where y=x);
for x in (select * from t1)loop if(exist(select null from t2 where y=x.x)) then output the record end if;end loop;
select 1 from dual where null in (0,1,2,null);
多行子查询
select * from emp where sal>any(select avg(sal) from emp group by deptno);
select * from emp where sal>all(select avg(sal) from emp group by deptno);
select * from emp where job in (select job from emp where ename='MARTIN' or ename='SMITH');
随机返回6条记录
select * from (select ename,job from emp order by dbms_random.value()) where rownum<=6;
处理空值排序 last(first)
select * from emp order by comm desc nulls last;
查询跳过表中的偶数行
select ename from (select row_number() over (order by ename) rn,ename
from emp) x where mod(rn,2)=1;
查找员工信息与其工资最高最低员工
select ename,sal,max(sal) over(),min(sal) over() from emp;
连续求和
select ename,sal,sum(sal) over(),sum(sal) over(order by ename) from emp;
sum(sal) over(order by ename)
指的是连续求和,是以ename来排序的,若有两个这样的窗口函数,以后面的排序为主。
分部门连续求和
select deptno,sal,sum(sal) over (partition by deptno order by ename) as s from emp;
得到上一行或下一行的数据
select ename,sal,lead(sal) over (order by sal) aaa,lag(sal) over(order by sal) bbb from emp;
统计每月及上个月和下个月的总收入 月份month 人员person 收入income
select [month] ,sum([income]),lead(sum ([income])) over(order by sum([income])) from [table] group by [month];
根据子串分组
select to_char(hiredate,'yyyy'),avg(sal) from emp group by to_char(hiredate,'yyyy');
确定一年的天数
select add_months(trunc(sysdate,'y'),12)-trunc(sysdate,'y') as 天数 from dual;
查询emp员工表下每个部门工资前二名的员工信息
1.
select deptno,ename,sal from emp e1 where (select count(1) from emp e2 where e2.deptno=e1.deptno and e2.ename!=e1.ename and e2.sal>e1.sal)<2 order by deptno, sal desc;
2.
select * from (select deptno ,ename,sal,row_number() over (partition by deptno order by sal desc) rn from emp) where rn<3;
数据字典
查询某用户下所有的表
select table_name from all_tables where owner='SCOTT';
查询emp表中所有字段(列)
select * from all_tab_columns where table_name='TEMP';
列出表的索引列
select *from sys.all_ind_columns where table_name='TEMP';select * from sys.all_ind_columns where upper(table_name)='CAREUSERHAM';
列出表中约束
select * from all_constraints where table_name='TEMP';
在oracle中描述数据字典视图
select table_name,comments from dictionary where table_name like '%TABLE%';
0 0
- Oracle学习笔记:高级查询
- [oracle学习笔记]之三:高级查询
- Oracle 11g学习笔记--高级查询
- oracle学习笔记(5)_高级查询
- Oracle 学习笔记 14 -- 集合操作和高级子查询
- Oracle高级查询语句学习
- hive学习笔记-高级查询
- mongodb 学习笔记-高级查询
- Elasticsearch 学习笔记 高级查询
- oracle 高级SQL查询笔记12-01
- oracle学习之--高级查询基础
- Oracle数据库学习(四)--高级查询
- Oracle学习笔记——Oracle高级
- Oracle学习笔记——Oracle高级
- Oracle Database 11g SQL 开发指南学习笔记:高级查询
- Oracle学习笔记(7)——高级查询(1)
- oralce学习笔记之高级查询篇
- Oracle 层次查询-学习笔记
- 树莓派远程桌面,error problem connecting
- hdu1712 ACboy needs your help(分组背包)
- Stream数据流
- C#初学系列第一章
- luogu【P1464】Function
- Oracle学习笔记:高级查询
- 线性表的链式存储结构---双向链表
- 解决Gradle DSL method not found: ‘android()’
- matlab与python SOCKET通信——UDP方法与TCP方法
- android graphic(1)—轮廓
- 【Vijos1037】双塔tower
- Servlet与JSP内置对象的对应关系
- luogu【P1014】Cantor表
- DBUtils的具体使用案例。