关于oracle分组排序取值的问题

按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条)

SELECT*
FROM(
SELECT a.*,row_number() over(partition by ORI_FEE_ID order by MODIFY_TIME DESC) cn
FROM AGENT_RESERVE_FEE_RATE a
)
WHERE cn = 1;

- MODIFY_TIME 排序字段
- ORI_FEE_ID 分组字段
- cn 为取值区间

时间: 2024-08-06 16:47:19

关于oracle分组排序取值的问题的相关文章

Oracle 中分组排序取值的问题

整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:INSERT INTO EXAM VALUES ('赵柳', '数学', '71');INSERT INTO EXAM VALUES ('张三', '数学', '81');INSERT INTO EXAM VALUES ('李四', '数学', '75');INSERT INTO EXAM VALUES

mysql或者oracle分组排序取前几条数据

mysql: select a.* from(select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段<t1.排序字段) as group_idfrom 表 t1) awhere a.group_id<=3 Oracle: SELECT t.*            FROM (SELECT ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段 DESC) rn,      

分组排序取次数

原文:分组排序取次数 函数 row_number() row_number() over (partition by patient_id /*需要分组的列*/ order by zyid /*排序的列*/) sqlSELECT ZYID, patient_id ,row_number() over (partition by patient_id order by zyid) visit_id from jk_patient_in_hospital oracle create or repla

Oracle分组后取某列最大值的行数据

select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname order by logindate desc) rn from reocrd ) t where t.rn <=1 这段的意思是,将reocrd表根据员工工号( employeeid),线路(,roadline),站点名称(stationname)分组后,取登录日期(logindate) 最大的那

mysql分组排序取最大值所在行的实现方法

如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分.(类似hive中: row_number() over(partition by)) select c.* from ( select a.*, (@i := case when @key_i=parent_code then @i+1 else 1 end) as sort_num,(@key_i:=parent_code) as tmp from my_test a, (SELECT

oracle中分组排序取TOP n

数据库中数据处理时,经常需要对某一类的数据取Top n,这就涉及到分组group by 并排序 order by ,之后根据rownum获取前几名数据,oracle数据库中ROW_NUMBER() OVER函数可以实现这个功能,如下: /*获取tab_a表中每个省份counts最大的前10个kpi*/SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY prov ORDER BY counts DESC) rn, prov, kpi, coun

[MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit

前言:         同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来.        oracle里面可以通过row_number() OVER (PARTITION BY cid,author ORDER BY id DESC) 表示根据cid,author分组,在分组内部根据id排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的),而mysql数据库就没有这样的统计函数,需要自己写复杂的sql来实现. 1,录入测试数据 USE csd

MySQL分组排序取前N条记录以及生成自动数字序列--group by 后 limit 外加 rownumber

同事提了一个需求,要求按照某列分组,然后将各组的前几条抽取出来. 表结构 CREATE TABLE `total_freq_ctrl` ( `time` int(10) unsigned NOT NULL, `machine` char(64) NOT NULL, `module` char(32) NOT NULL, `total_flow` int(10) unsigned NOT NULL, `deny_flow` int(10) unsigned NOT NULL, PRIMARY KE

oracle分组后取每组第一条数据

数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC)rn, test1.* FROM test1) WHERE rn = 1 ;