文档章节

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

轻量级赤影
 轻量级赤影
发布于 07/20 10:09
字数 324
阅读 15
收藏 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
博文 57
码字总数 24040
作品 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
ORACEL学习--ORACLE统计分析函数

文章来自:ORACLE统计分析函数 一:准备条件 本文讲述Oracle分析函数用法,首先建库:Sql代码 然后插入实验数据:Sql代码 然后看看刚刚建好的库:Sql代码 二:统计函数 (1)sum函数,统计总合...

spinachgit
10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
14
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部