Oracle之PL/SQL有关查询实现
2012-06-20 14:24
561 查看
最近有看到网上关于排序查询的实现有两个自己不常用的查询语法,关于分析函数的用法,记之,鉴之,勉之;
在一个表里怎么查询每列数据的最大值和次大值?
对一张表中的数据做如下操作啊,先对数据进行分分组,再在组内进行排序,再显示每组中的前两行
在一个表里怎么查询每列数据的最大值和次大值?
WITH tt AS (SELECT CASE WHEN col1 IN (1, 2) THEN empno ELSE NULL END empno, CASE WHEN col2 IN (1, 2) THEN ename ELSE NULL END ename, CASE WHEN col3 IN (1, 2) THEN job ELSE NULL END job, CASE WHEN col4 IN (1, 2) THEN mgr ELSE NULL END mgr, CASE WHEN col5 IN (1, 2) THEN hiredate ELSE NULL END hiredate, CASE WHEN col6 IN (1, 2) THEN sal ELSE NULL END sal, CASE WHEN col7 IN (1, 2) THEN comm ELSE NULL END comm, CASE WHEN col8 IN (1, 2) THEN deptno ELSE NULL END deptno FROM (SELECT empno, ROW_NUMBER () OVER (ORDER BY empno DESC) col1, ename, ROW_NUMBER () OVER (ORDER BY ename DESC) col2, job, ROW_NUMBER () OVER (ORDER BY job DESC) col3, mgr, ROW_NUMBER () OVER (ORDER BY mgr DESC) col4, hiredate, ROW_NUMBER () OVER (ORDER BY hiredate DESC) col5, sal, ROW_NUMBER () OVER (ORDER BY sal DESC) col6, comm, ROW_NUMBER () OVER (ORDER BY comm DESC) col7, deptno, ROW_NUMBER () OVER (ORDER BY deptno DESC) col8 FROM emp)) SELECT MAX (empno) empno, MAX (ename) ename, MAX (job) job, MAX (mgr) mgr, MAX (hiredate) hiredate, MAX (sal) sal, MAX (comm) comm, MAX (deptno) deptno FROM tt UNION ALL SELECT MIN (empno) empno, MIN (ename) ename, MIN (job) job, MIN (mgr) mgr, MIN (hiredate) hiredate, MIN (sal) sal, MIN (comm) comm, MIN (deptno) deptno FROM tt
对一张表中的数据做如下操作啊,先对数据进行分分组,再在组内进行排序,再显示每组中的前两行
select * from (select d.empno, d.deptno, sum(sal), rank() over(partition by deptno order by sum(sal) desc) rank from scott.emp d group by d.empno, d.deptno) where rank<3
相关文章推荐
- Oracle纯SQL实现递归查询分页(树查询分页)
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
- SQLQuery 查询Oracle char类型返回一个字符有关问题
- Oracle PL/SQL之WITH查询
- Oracle PL/SQL之WITH查询
- Script:利用外部表实现SQL查询Oracle告警日志Alert.log
- oracle——pl/sql 查询中文乱码
- Oracle中用pl/sql实现货币数字格式到汉字格式的转化
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程一 PL/SQL 基本查询与排序
- Oracle PL/SQL之WITH查询
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle PL/SQL开发基础(第九弹:多表连接查询)
- Oracle,SQl,MySql实现分页查询
- Oracle PL/SQL之递归查询 - CONNECT BY PRIOR
- 使用PL/SQL Developer图形界面轻松实现oracle定期计划任务
- WMS仓储管理系统实现"收发存日报表"数据查询功能Sql语句--Oracle
- PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
- oracle:两条sql语句实现层次查询的反序权值计算与输出
- Oracle EBS - SQL&PL/SQL: 查询Profile设置,具体到Site、App、Resp、User