如果通过简单的方法选择分组的第一行(或最后一行)数据(oracle)
2012-09-07 15:19
393 查看
有时我们对数据order by后,需要取出每一个分组中的第一行或者最后一行,有什么比较好的办法?
假设order by deptno,sal后的数据如下:
deptno empno sal
10 1002 2400
10 1003 2400
10 1001 2500
10 1004 3000
20 2005 1900
20 2003 2000
20 2002 2000
20 2001 2400
现在我只需要对每个部门取最前面的一条数据:
deptno empno sal
10 1002 2400
20 2005 1900
何解?
是否又需要分析函数?
oracle:
select
x.deptno,x.empno,x.sal from
(
select
deptno,
empno,
sal,
row_number() over (partition by deptno order by sal asc) as rowno
from
emp
) x
where
x.rowno=1
假设order by deptno,sal后的数据如下:
deptno empno sal
10 1002 2400
10 1003 2400
10 1001 2500
10 1004 3000
20 2005 1900
20 2003 2000
20 2002 2000
20 2001 2400
现在我只需要对每个部门取最前面的一条数据:
deptno empno sal
10 1002 2400
20 2005 1900
何解?
是否又需要分析函数?
oracle:
select
x.deptno,x.empno,x.sal from
(
select
deptno,
empno,
sal,
row_number() over (partition by deptno order by sal asc) as rowno
from
emp
) x
where
x.rowno=1
相关文章推荐
- Oracle通过PL/SQL Developer导出数据为CSV格式,VARCHAR2类型的字段如果存入的是数值(例如3307830000004059)太长,最后一位会被置为0
- tabelView滑动到最后一行 第一行 任意一行的方法
- sqlserver用当前行减去前一行的数据的简单处理方法 -- 不使用循环
- DataTable获取第一行和最后一行的数据
- C#实现通过单击gridview中的选择其中的一行数据
- Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。 Input 输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义
- 一个简单的方法查询一列数据为一行
- 根据名称分组,选择最大日期和最小日期的数据,并显示在一行上
- 用C#通过DatabaseLink连接远程Oracle数据表的错误,及其变通方法
- Oracle通过DBLink操作数据表,报错“ORA-22992:无法使用从远程表选择的lob定位器”
- 如果简单优雅地为ListView的最后一行添加分割线
- oracle查询分组数据中的最后一条数据和每组的数量
- 向DataGridView中添加新的一行数据,可以添加到最后一行或作为第一行
- 删除oracle重复数据简单方法
- Oracle DBLINK 简单使用 oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入、修改、删除等操
- oracle导入大数据、数据库之间迁移数据简单方法
- 简单总结db2,sqlserver,oracle,mysql 取数据集中的几条数据的方法
- oracle之通过系统表创建一个几万的数据的表的方法
- union all用法,两个查询结果,一起显示,(一般最后添加一行汇总数据可以用这个方法)
- oracle RMAN模拟数据文件丢失简单恢复方法