`

oracle 去重并按时间排序取第一条

阅读更多


select  t.*
   from (select a.*, row_number() over(partition by 需要分组的字段 order by 更新时间 desc) rw
           from 表 a) t
  where t.rw = 1



row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码。
row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开始排序)。
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
dense_rank()也是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的。

oracle 分析函数 row_number(),返回一个整数值(>=1);
分享到:
评论

相关推荐

    SQL去重 清除冗余数据

    full(lin_test )声明为全局扫描,parallel(lin_test 5)声明为5个并发查询,row_number() over(partition by id, name, order by id)作用是把结果按id, name分组,组内按id排序,然后再取排名第一之外的其他记录删除...

    Oracle表中重复数据去重的方法实例详解

    `ROW_NUMBER()`函数会为每组内的每一行分配一个数字,对于重复的`name`值,第一次出现的行会得到1,后续出现的行将得到2或更高。然后,外部的`DELETE`语句删除所有`nu`值大于1的行,即那些不是每个分组中第一次出现...

    Oracle1.pdf

    在Oracle笔记的第一天,我们主要探讨了数据库的基本概念、Oracle的工作方式、简单的查询操作、数据去重、排序以及条件判断。 首先,数据库是存储和管理数据的软件,其中最常见的是RDBMS,如Oracle、MySQL、SQL ...

    Oracle超详细学习笔记

    - 第一条命令展示了如何计算年薪 (`salary * 12`) 并给它起别名 `annual_salary`。 - 第二条命令展示了如何执行算术运算 (`5 / 2`)。 ##### 5. 给列定义别名 - **命令示例**: ```sql SELECT employee_id AS id ...

    ORACLE去除重复数据方法

    - `SELECT * FROM cte WHERE rn = 1`:这一行代码用于选择每个分组中的第一条记录,即行号为1的记录。 #### 总结 本文介绍了两种在Oracle数据库中去除重复数据的方法:一是通过子查询实现,二是利用窗口函数`ROW_...

    oracle去重复

    2. **外层查询**: 然后,通过`t2.rk = 1`条件筛选出每个分组的第一条记录(即行号为1的记录),同时限制`dept_level`为4。最后,对`user_deptno`和`deptfourname`进行分组计数。 **效果**: - 该查询能有效地去除...

    oracle练习题39题(附个人编码答案)

    - 子查询用于在函数内部执行查询,例如`(SELECT DISTINCT salary, DENSE_RANK() OVER (ORDER BY salary DESC) RN FROM employee)`,这个子查询首先去重并根据薪水降序排名。 - `INTO`关键字用于将查询结果赋值给...

    Oracle操作语句大全

    - **SELECT ENAME, SAL FROM EMP WHERE SAL <> 1000 ORDER BY SAL DESC**:查询`EMP`表中薪资不等于`1000`的员工的姓名和薪资,并按薪资降序排列。 以上就是基于提供的文件内容整理的Oracle操作语句的详细介绍,...

    马士兵oracle笔记

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,主要用于存储和管理企业级的数据。马士兵的Oracle笔记提供了许多关于Oracle SQL的基础操作和技巧,以下是其中的关键知识点: 1. **SQLPlus登录**:Oracle...

    Oracle常用关键词和函数

    MINUS关键字用于在两个查询结果之间找到差异,返回的结果是只存在于第一个查询中的行。需要注意的是,MINUS操作也会自动去除重复行。 最后,游标(CURSOR)是Oracle处理结果集的一种方式,主要用于存储过程和函数。...

    达内ORACLE练习一达内ORACLE练习一

    显示所有员工的信息,并按名字排序 **SQL语句**: ```sql SELECT ename, empno, mgr, deptno, job FROM emp ORDER BY ename; ``` **解析**: - `ORDER BY ename`: 按`ename`排序。 ### 18. 显示所有员工的入职日期...

    尚学堂视频笔记-oracle

    #### 第一课:客户端工具介绍 - **SQL Plus**:作为Oracle最基础的客户端工具,SQL Plus支持通过命令行或图形界面进行数据库操作。 - **命令行方式**:直接在命令行输入`sqlplus`,随后按照提示输入用户名和密码...

    文本去重(去除数组中重复项)

    在IT领域,文本去重是一项常见的任务,尤其是在处理大量数据或构建词表时。这个过程主要是从一个数据集合中移除重复的元素,确保每个元素只出现一次。在这个场景下,我们将关注如何在Java中实现这个功能,特别是针对...

    oracle语句大全

    - 示例:`SELECT ENAME, SAL FROM EMP WHERE SAL <> 1000 ORDER BY SAL DESC`,选择`SAL`不等于1000的记录,并按`SAL`降序排列。 通过以上知识点的学习,我们可以更好地理解和掌握Oracle SQL的基本操作,包括表...

    Mysql利用group by分组排序

    昨天有个需求对数据库的数据进行去重排名,同一用户去成绩最高,时间最短,参与活动最早的一条数据进行排序。我们可以利用MySQL中的group by的特性。 MySQL的group by与Oracle有所不同,查询得字段可以不用写聚合...

    Oracle图文笔记

    ` —— 按降序排列。 7. **日期操作:** 使用 `SYSDATE`, `ADD_MONTHS`, `NEXT_DAY`, `LAST_DAY` 等函数处理日期。 - 示例: `SELECT ADD_MONTHS(SYSDATE, 6) FROM DUAL;` —— 获取当前日期六个月后的日期。 #### ...

    Oracle Sql 优化

    在WHERE子句中使用`IS NULL`或`IS NOT NULL`会导致Oracle优化器无法利用索引进行优化,因为NULL值并不参与索引排序。为了充分利用索引,应避免在WHERE子句中使用这类条件,除非确实需要检查NULL值的存在。 ##### ...

    oracle 11g 复习题

    ### Oracle 11g 复习题知识点梳理 #### 第二章知识点详解 **一、填空题知识点解析** 1. **Oracle数据库物理存储结构**: - **数据文件**:存储实际的数据信息。 - **日志文件**:记录数据库的所有事务更改,...

    Oracle_SQL语句大全教程

    - `SELECT ENAME, SAL FROM EMP WHERE SAL <> 1000 ORDER BY SAL DESC`: 查询薪资不等于 1000 的员工,并按薪资降序排列。 通过上述知识点的学习,可以了解到 Oracle SQL 中常用的基本查询、条件筛选、排序及一些...

Global site tag (gtag.js) - Google Analytics