`
yhef
  • 浏览: 66965 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用ROW_NUMBER()函数实现按条件分组排序

阅读更多

背景:
我想删除表中的重复数据,但是我又想以某些条件进行排序,然后再删除,用普通的GROUP BY相对麻烦,可以尝试这个方法。

数据准备:
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600.00, 300.00, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7500, 'ALLEN', 'SALESMAN', 7698, to_date('01-02-1980', 'dd-mm-yyyy'), 1600.00, 300.00, 30);



数据过滤:
select *
  from (select /*+ parallel(t,8)*/
         row_number() over(partition by t.ename order by t.hiredate desc) rn,
         t.empno,
         t.ename,
         t.hiredate,
         rowid row_id
          from emp t)
 where rn >= 2;
分享到:
评论

相关推荐

    sqlserver巧用row_number和partition by分组取top数据

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单

    深入探讨:oracle中row_number() over()分析函数用法

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。 与rownum的区别在于:使用rownum进行排序的...

    Oracle开发之分析函数(Rank, Dense_rank, row_number)

    本文主要是对Oracle分析函数Rank, Dense_rank, row_number的使用法,通过这些函数,我们可以对数据进行排序和分组,需要的朋友可以参考下。

    Gbase 8s内置函数之窗口函数

    Gbase 8s内置函数之窗口函数

    ORACLE 常用分析函数

     ROW_NUMBER () OVER([partition_clause] order_by_clause) dense_rank在做排序时如果遇到列有重复值,则重复值所在行的序列值相同,而其后的序列值依旧递增,rank则是重复值所在行的序列值相同,但其后的序列值从...

    oracle中rownum和row_number()

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。 与rownum的区别在于:使用rownum进行排序的...

    Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

    是第3名 LAG 表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL BTW: EXPERT ONE ON ONE 上讲的最详细,还有很多相关特性,文档看起来比较费劲 row_number()和rownum差不多,功能更强一点...

    oracle分组排序统计高级用法

    oracle如何实现分组排序和统计、聚集,如何分组求top N,什么是over分析函数,row_number(),rank(),dense_rank()区别又是什么, 如何找到一条记录的前后值,这份文档写得太好了。

    包含了所有的oracle函数文档

    Oracle 函数分类 :单行函数 ...序号跳过相应的数值 row_number() 每行返回唯一排序值 dense_rank() 相同值排位相同 序号是连续的这些也就是我们说的伪列日期函数主要为 一些 象Add_months,last_day round 等等数字函数

    postgreSQL窗口函数总结

    postgreSQL窗口函数总结 1 窗口函数说明 2 ...3 row_number over 窗口函数的使用 5 3.1 显示数据的行号 5 3.1.1 顺序显示行号 5 3.1.2 获取一段内的数据 5 3.2 显示分区的个数 6 3.3 按照department分组w

    SQL开窗函数介绍以及示例

    ROW_NUMBER(): 为每一行分配一个唯一的数字序号。 RANK(): 计算每一行在结果集中的排名,相同值会有相同的排名,但不会有间隔。 DENSE_RANK(): 计算每一行在结果集中的排名,相同值会有相同的排名,但会有间隔。 SUM...

    SQL语句分组获取记录的第一条数据的方法

    使用ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2) 先进行分组 注:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). sql语句为: select ...

    如何实现SQL Server 2005快速Web分页

    分页就是按照某种规则显示分组数据集,但是在SQL Server 中,分页并不是十分容易就...在本文中将着重介绍新增加的ROW-NUMBER排序函数,它会根据你指定的分类标准将结果数据集进行分类,同时给数据集分配连续的页面。

    SQL Server 开窗函数 Over()代替游标的使用详解

    1、与Row_Number() 函数结合使用,对结果进行排序,这个是我们使用的非常多的   2、与聚合函数结合使用,利用over子句的分组和排序,对需要的数据进行操作 例如:SUM() Over() 累加值、AVG() Over() 平均数 MAX() ...

    T-SQL高级查询

    # row_number函数 根据排序子句给出递增连续序号 按照名称排序的顺序递增 select s.id, s.name, cid, c.name, row_number() over(order by c.name) as number from student s, classes c where cid = c.id; # ...

    oracle实验报告

    (3) 学会使用高级SQL命令,排序、分组、自连接查询等。 (4) 学会使用SQL*PLUS命令显示报表,存储到文件等。 【实验内容】 一、 准备使用SQL*PLUS 1. 进入SQL*PLUS 2. 退出SQL*PLUS 3. 显示表结构命令DESCRIBE SQL>...

    mysql数据库的基本操作语法

    Ø 常用查询 MySQL结束符是“;”结束。 1、 显示所有数据库 show databases; 2、 删除数据库 ...Ø select 查询、function 函数 select查询语句用得最广泛、功能也最丰富。可以完成单条记录、多条记录、单表...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...

Global site tag (gtag.js) - Google Analytics