原文转自 https://www.jianshu.com/p/d5c0a355890b,感谢作者styone分享。

SELECT t.*
FROM
(SELECT a.*, row_number ( ) over ( PARTITION BY userid ORDER BY 时间字段 DESC ) rw FROM 需要查询的表 a ) t
WHERE t.rw =1

ow_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);

oracle 根据排序去重取第一条的更多相关文章

  1. oracle 根据字段分组取第一条数据及rank函数说明

    当前有这样一个需求,根据外键对子表数据进行分组,取每组中的一条数据就行了,如图: 如:COMMANDID = 26的有两条,只取一条数据. sql语句: select * from(select SY ...

  2. MySQL 分组排序,取第一条

    select t1.* from coal_installed_capacity t1where NOT EXISTS (select * from coal_installed_capacity t ...

  3. oracle获取排序后的第一条信息

    查询表table1里字段id小于10的所有数据,并且让数据根据id降序排列,然后得到第一条数据 select * from (select * from table1 where id<10 o ...

  4. SQL group by 分组后,同一组的排序后取第一条

    SELECT * FROM(                SELECT                     [SPID]                    ,[PH1]           ...

  5. Oracle 查询出来的数据取第一条

    Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:h ...

  6. sql分组取第一条数据

    sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * ...

  7. MySQL中分组取第一条, 以及删除多余的重复记录

    检查重复记录 -- 检查重复code1 select count(identity) num, identity from event_log where code='code1' order by ...

  8. c# 对List<T> 某字段排序,取TOP条数据

    //排序的对象里的字段数据准备 try { cmr.v4 = Double.Parse(cmr.v3) - Double.Parse(cmr.v2); } catch (Exception e) { ...

  9. MySQL分组排序(取第一或最后)

    MySQL分组排序(取第一或最后) 方法一:速度非常慢,跑了30分钟 SELECT custid, apply_date, rejectrule FROM ( SELECT *, IF ( , ) A ...

  10. sqlalchemy怎么order_by降序/升序并取第一条数据

    原文链接:https://blog.csdn.net/mark4541437/article/details/103755721 sqlalchemy怎么order_by降序/升序并取第一条数据 fr ...

随机推荐

  1. linux找到目录下的大文件

    用这个命令找一下大于800M的文件 find . -type f -size +800M -print0 | xargs -0 ls -lh 非常方便 能看的到哪些文件有多大

  2. sql注入--学习笔记_1

    实验室 sql sql可以对数据库进行访问和处理:取回数据,删除数据.web页面会使用这些. SQL 能做什么? SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记 ...

  3. 使用SwingWorker异步加载JTree

    SwingWorker是Java SE 6.0新加入的一个工具包,利用它可以使长时间运行并更新用户界面的任务大大简化.本文以一个异步加载JTree的demo演示了SwingWorker的基本功能. 环 ...

  4. golang之常用方法/函数

    1. io.Reader转化为字符串, byte切片 import "bytes" func StreamToByte(stream io.Reader) []byte { buf ...

  5. Ansible 运维自动化

    Ansible 概述Ansbile是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,列如持续部署,滚动更新.Ansible 适用于管理企业IT基础设施,从具有少数主机的小规模到数 ...

  6. 通过双 key 来解决缓存并发问题

    我们在使用缓存的时候,不管Redis或者是Memcached,基本上都会遇到以下3个问题:缓存穿透.缓存并发.缓存集中失效.这篇文章主要针对[缓存并发]问题展开讨论,并给出具体的解决方案. 1.什么是 ...

  7. npm depcheck 包依赖检查

    1.概述 在前端开发时,如果经常会遇到一些依赖的问题,比如一个项目,之前在 package.json安装了某个包,后来又删除了这个包,但是node_modules 包还是在的,但是我们把代码给其他人安 ...

  8. elastic8.4.0搜索+logstash<=>mysql实时同步+kibana可视化操作+netcore代码笔记

    做全文搜索,es比较好用,安装可能有点费时费力.mysql安装就不说了.主要是elastic8.4.0+kibana8.4.0+logstash-8.16.1,可视化操作及少了netcore查询代码. ...

  9. CSS3 背景图片

    1.背景图大小(background-size) 这个属性设置单张背景图的大小,默认是原图的大小 当同时指定宽高时,会造成图片失真,如果要保持宽高比,可以使用 auto 字段让宽或者高自适应 值类型 ...

  10. WinForm(C/S)项目中使用矢量字体(FontAwsome、Elegant)图标

    1.介绍 字体图标在Web应用中最为常见,字体图标是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真.字体图标常见的有Font Awesome和Elega ...