【Oracle partition by 实现字段去重】

news/2024/5/17 17:36:33/文章来源:https://www.cnblogs.com/dabuliu/p/16602531.html

1.利用开窗函数可以实现字段分组去重,其中要注意几点:

  • 需要外套查询语句,不然无法识别ROWNUM ,也就是 row_number
  • 注意 分组排序方式,比如这里排序是 s_id 降序排列,以s_code 进行分组,如果有两行数据的 s_code 相同,那么rownum =1 的时候就 是只取第一组,即 s_id最大的那一行
select temp.* from(
select row_number()over(partition by S_CODE order by s_id desc) as row_number,s_id,s_code,s_name,AMOUNT
from TEST ) temp
where temp.row_number = 1
order by s_id;

 

2. 测试用例:

 查询SQL见上,查询结果如下:

可以见到,所有重复行都根据s_id取了最大的那一行,如果rownum = 2 就会递减,展示重复行用s_id 降序排列 后 剩下 的一批次,如图:

  

 

 3. 总结

   目前来说Oracle 用group by 可以分组,但是无法实现查询其余字段又单一字段去重(除非你的其余字段均为聚合函数,sum(xx)这种) ,使用 或者 结合 rownum() over (partition by ....) 实现分组居多。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_379886.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub | DC-4

信息搜集 通过mac地址找真实IP地址 真实IP为192.168.0.151,开放端口80,22 爆破密码 访问后是一个登录框,爆破尝试 admin/happy访问后是一个登录框,爆破尝试 admin/happy 命令执行 登陆后有一个命令执行选项,抓包修改参数可以执行任意命令 反弹shell失败了 找一找敏感文件 ca…

PowerShell教程 - 编程结构(Program Struct)- 第三部分

更新记录 转载请注明出处。 2022年8月21日 发布。 2022年8月18日 从笔记迁移到博客。预定义变量 预定义的布尔值 $True $False预定义变量 预定义变量 描述(Description) $^ 表示当前会话的使用过的最后一条命名的最前部分 $$ 表示当前会话的使用过的最后一…

压测工具 Locust

Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)一、认识Locust 定义 Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust…

#{}和${}的区别是什么

#{}和${}的区别是什么 动态 sql 是 MyBatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 MyBatis 会对其进行动态解析。MyBatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。 区别 1)#{}是预编译处理,$ {}是字符串替换。 2)MyBatis在处理#…

Mybatis组件介绍

核心组件 SqlSessionFactoryBuilder SqlSessionFactoryBuilder的作用就是通过XML或者Java代码来建造一个工厂(SqlSessionFactory),并且可以通过它建造多个这样的工厂。一旦完成建造工厂的任务,我们就应该废弃它,回收空间。所以它的生命周期只存在方法局部,完成工厂的建造即…

JAVA入门2022年8月19日

第一节 1.注释是什么写在程序中对程序进行解释说明的文字。 2.java中书写注释的方法有几种,各自有什么不同// 单行注释/* */ 多行注释/** */ 文档注释 3.注释有什么特点不进行编译,不影响程序的执行 4.注释的快捷键是怎么样的 第二节1.字面…

vue的生命周期

一、Vue 的生命周期 一、Vue 的生命周期流程图二、Vue 生命周期的具体    生命周期 描述beforeCreate 组件实例被创建之初created 组件实例已经完成创建beforeMount 组件挂载之前mounted 组件挂载到实例上去之后beforeUpdate 组件数据发生变化,更新之前updated 组件数据更新…

spring源码学习笔记1——解析xml生成BeanDefinition的过程解析

spring源码学习笔记1——解析xml生成BeanDefinition的过程解析 一丶Spring解析Xml生成BeanDefinition的流程 1.指定xml路径 解析xml首先需要知道xml的位置,如下我们构造了ApplicationContext ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml&…

IOC

介绍 什么是SpringIOC,就是把每一个bean(实体类)与bean(实体类)之间的关系交给第三方容器进行管理。关键类BeanFactory IOC的顶层容器,描述了IOC的规范。 BeanFactory是一个接口,是Spring中工厂的顶层规范,IOC的核心接口。 定义了getBean()、containsBean()等管理Bean的通用…

JUC进阶

JUC进阶 wait和sleep的区别sleep是Thread的静态方法,wait是Object方法sleep不会释放锁,它也不需要占用锁,wait会释放锁但调用它的前提是当前线程占有锁wait必须在同步代码块中Lock锁public class LockTest { public static void main(String[] args) { Ticket t…

Spring 03: 基于xml的构造方法注入

构造方法注入具体有3种注入方式:通过构造方法的 a.参数名称注入 b.参数下标注入 c.默认参数顺序注入参数名称注入School实体类package com.example.pojo03;public class School {private String name;private String address;@Overridepublic String toString() {return &…

Vmware 安装CentOS 7

Vmware 安装CentOS 7 创建虚拟机 1、新建虚拟机,选择自定义(高级),下一步。其他默认下一步。选择操作系统Linux,CentOS 7 64位,下一步。输入主机名称,虚拟机存储位置。 2、输入内核数量3、输入内存大小,下一步,其他默认下一步。4、指定磁盘大小,下一步5、自定义硬件,…

深度学习基础课:课程介绍

大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序 本文为第一节课:课程介绍的复盘文章深度学习基础课:课程介绍 大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接…

一台服务器​最大并发 TCP 连接数多少

一台服务器​最大并发 TCP 连接数多少 入门小站 入门小站 2022-07-06 22:10 发表于湖北收录于合集#Linux485个 #tcp4个首先,问题中描述的65535个连接指的是客户端连接数的限制。在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那…

js的原型

prototype 概述:所有的函数都拥有一个属性 这个属性称为prototype 他是一个对象空间(里面就可以存放对应的数据)他被称为显式原型从上述代码 大家可以看到对应的构造函数的prototype和对应的实例对象的 __proto__ 是相等,那么也就证明了对应俩个内容其实是一个对象。那么我…

Condition介绍

Condition Condition是一种多线程通信工具,表示多线程下参与数据竞争的线程的一种状态,主要负责多线程环境下对线程的挂起和唤醒工作。 方法 // ========== 阻塞 ========== // 造成当前线程在接到信号或被中断之前一直处于等待状态。 void await() throws InterruptedExcept…

解决goland在mac m1下无法调试问题

背景 新电脑mac m1 goland调试抛出异常 异常信息 第一次异常信息 could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture 原因是goland版本安装错了. 下载地址:https://www.jetbrains.com/zh-cn/go…

排序(上)

目录冒泡排序(Bubble Sort)插入排序(Insertion Sort)选择排序(Selection Sort)冒泡排序和插入排序的比较 最经典的、最常用的有:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序 冒泡排序(Bubble Sort) 冒泡排序只会操作相邻的两个数据…

Codeforces Round #815 (Div. 2) 题解

Codeforces Round #815 (Div. 2) 全场题解CF1720A. Burenka Plays with Fractions给出两个分数 $ \dfrac{a}{b}$ 和 \(\dfrac{c}{d}\) ,你每次操作能够选择其中一个分数的分子或分母,将其乘上任意一个整数(当然不能对分母乘 \(0\))。要求求出能够使两个分数相等的最小操作次…

2022 牛客多校 Extra 第九场部分题解

2022 牛客多校第九场 & Extra 部分题解 前段时间沉迷生活大爆炸 & 原神 & vtb & galgame & 番无法自拔,因此咕到现在。。。 Cmostp 挺妙的题。本以为有一只 log 的做法。 覆盖后的颜色变换不多,可以用 set+树剖或者阉割版的lct+树状数组,我写了后者,把…