文档章节

oracle 排序 row_number() over(partition by 排序字段)

轻量级赤影
 轻量级赤影
发布于 07/20 10:09
字数 324
阅读 11
收藏 1

业务描述:按t.truckId,t.riskCode 分组,每个分组里有分数,取分组中分数最大的那条记录。

如:A1 B1   5  6    

      A1  B1   5  3

      A1  B2   2  5

      A1  B2   2  1

已经按 A,B分组了 但是 我需要第一条和第三条数据,就可以用这个row_number() over(partition by  排序字段)降序

然后取 rowseq = 1 的数据就可以拿到了

      

SELECT
     gg.sumScore     AS sumScore,
     gg.numberRisk   AS numberRisk,
     gg.happenTime   AS happenTime
FROM (
        SELECT
         g.sumScore      AS sumScore,
         g.numberRisk    AS numberRisk,
         g.happenTime    AS happenTime ,

        (row_number() over(partition by g.truckId  order by g.sumScore desc) ) as rowseq --分数最大的排在前面
        FROM(
            SELECT
            sum(score)                    as sumScore  ,--分数
            count(t.riskCode)          as numberRisk ,
            max(t.happenTime)      as  happenTime,
            t.truckId                      as  truckId
            FROM
            (
                SELECT
                    t1.truck_id  truckId,
                    to_char(t1.happen_time,'yyyy-mm-dd hh24:mi:ss')   AS  happenTime,
                    t2.score         As  score,
                    t2.code          As  riskCode
                FROM  b_risk_event t1
                INNER JOIN d_dictionary_info t2 ON t1.risk_type = t2.code
                WHERE t1.happen_time >  SYSDATE-30/(24*60)
                AND t1.del_flag='0'
                AND t2.father_type in('1','2','3','5','8','17','18','0')
                order by t1.happen_time DESC
            ) t
            GROUP BY t.truckId,t.riskCode
            ORDER  BY sumScore DESC,happenTime DESC
        )g
    ) gg

   WHERE   gg.rowseq =1

© 著作权归作者所有

共有 人打赏支持
轻量级赤影
粉丝 2
博文 46
码字总数 20682
作品 0
深圳
程序员
Oracle查询前10条记录及分页查询(第5条到第10记录)

如果你想了解Oracle查询前10条记录的相关实际应用方案的话,你就可以点击以下的文章对其在实际相关操作中的正确用法,有一个更加完善的认识,希望你在浏览完以下的文章会以下就是正文的详细内...

xiaole0313
2015/07/22
0
0
SQL(oracle) 取得分组后最大值记录

select from (select t., rownumber() over(partition by 分组字段 order by 排序字段 desc ) rn from tablename t ) where rn=1 select from (select t., rownumber() over(partition by ca......

风云海滩
2015/01/31
0
0
oracle 行列转换逻辑

该需求涉及到两个知识点:1、分析函数;2、行列转换。 先讲实现 第一步:建测试表 SQL code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 第二步:对表进行分组,组内编号1,2,3 SQL code ? 1 第三步:...

李狗蛋丶
2016/11/05
2
0
MySQL over函数的用法

over不能单独使用,要和分析函数:rank(),denserank(),rownumber()等一起使用。 其参数:over(partition by columnname1 order by columnname2) 含义:按columname1指定的字段进行分组排序...

ChinaUnicom110
2017/08/30
0
0
Oracle--10(ROW_NUMBER() OVER)

一、定义 语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说rownumber()从1开始,为每一条分组记录返回一个数字,这里的ROWNUMBER() OVER (ORDER BY xlh DESC) 是先把...

Carl_
2014/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
32分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
46分钟前
1
0
day62-20180820-流利阅读笔记

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
56分钟前
0
0
分布式锁实现及对比

一、问题介绍 日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易接受(前端交易请求发送时,可能由于两次提...

yangjianzhou
今天
3
0
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部