dkfr.net
当前位置:首页 >> orAClE分组后的整条记录怎么取 >>

orAClE分组后的整条记录怎么取

select a.* from a,(select fid,max(time) time from a group by fid) b where a.fid=b.fid and a.time=b.time

oracle进行分组后,取出每组的前几条数据SELECT *FROM (SELECT 分组的字段名,ROW_NUMBER() OVER(PARTITION BY 分组的字段名 ORDER BY 排序的字段名) AS RNFROM 表名)WHERE RN

select code,num,price,date,sum_num from ( select code,num,price,date,row_number() over (partition by code order by date desc) rn, sum(num) over (partition by code) sum_num ) a where rn=1

SELECT * FROM (SELECT T2.*, ROW_NUMBER() OVER(PARTITION BY MAE_NAME ORDER BY TIME_STAMP_END DESC) AS RN2 FROM (SELECT T1.*, ROW_NUMBER() OVER(PARTITION BY MAE_NAME, PRODUCT, OP, VERSION ORDER BY TIME_STAMP_END DESC) AS RN1 FROM...

可用row_number来实现。 如emp表中有如下数据: 现要提取按sal排序后,sal最大的一条数据,可用如下语句: select t.* from(select row_number() over (order by sal desc) rn,emp.* from emp) twhere rn=1;查询结果:

逻辑很简单,但是看下解析之后还是很明白的。Q2。在oracle中有一数据表exam_result(成绩记录表),表中的一条记录描述了“某个班某个学生某次考试的成绩"create table EXAM_RESULT(ID NUMBER(10) not null, --主键CLASSID NUMBER(10) not null, ...

你可以首先在查询数据的时候使用排名函数rank()对你的数据进行排名 在查出的结果上再次进行查询,这次的条件可以是排名字段的值为

select * from (select a.*, row_number() over (partition by a.col_a order by create_ts desc) as rn from table1 a ) where rn = 1; -- table1 换成你的表, col_a 换成你的分组列, create_ts 是你的时间戳字段, 如果是字符串需转换为date

用如下语句,查出符合条件的数据后,只取第一行: select * from table_name where 条件1 and 条件2 and rownum=1;

需要看按照分组条件能分为几组。能分成几组结果就是几条记录。

网站首页 | 网站地图
All rights reserved Powered by www.dkfr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com