oracle查询结果如果某个字段重复的时候就取另一个字段值最小的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle查询结果如果某个字段重复的时候就取另一个字段值最小的数据相关的知识,希望对你有一定的参考价值。
如表a数据信息如下:
Id name Results
1 karl 85
2 ramon 90
3 karl 93
4 ramon 95
如果name相同的时候 取Results 最大的数据
如图所示的最后的结果应该是
Id name Results
1 karl 93
2 ramon 95
本来想多悬赏点分数,奈何没有那么多的资本 请各位多多帮助
多谢两位,我把自己写的sql语句和产生结果贴上去 期望大家能帮助我解决,解决的话 我会多给分的.具体的代码和产生结果的截图请查看图片,有问题不明白请QQ联系我:308948501 添加好友时请说明是百度知道帮组解决问题的朋友.再次感谢
GROUP BY A.NAME;
就是这么简单! 参考技术B select rownum,a.* from select (name, max(results) from table_a group by name order by name) a;追问
我把sql语句和产生结果的截图给你请你帮忙看下 谢谢. 或者能告诉我你的qq 我们在线说.
追答你这个要用到row_number()函数,语法是row_number() over(partition by 报修单号 order by 到修时间)。用这个函数可以按照报修单号分组,每组中按照到修时间排序并分配一个序号。想要最小的就取序号是1的,想要最大的就row_number() over(partition by 报修单号 order by 到修时间 desc)取序号是1的。
举例:
select 报修单号, 到修时间 from (select 报修单号, 到修时间, row_number() over(partition by 报修单号 order by 到修时间) rn from table_name) where rn=1 order by 报修单号;
可以根据需要加上desc或者不加。
oracle 按某个字段查询重复数据
/* 手机号为重复的会员,获取其最大会员id,对应的会员信息 */ SELECT * FROM MEMBER a WHERE a.member_id IN ( SELECT MAX(member_id) FROM MEMBER b WHERE b.mobile IN (SELECT mobile FROM ( SELECT t.mobile,t.mobile_state,t.is_delete FROM MEMBER t WHERE t.is_delete=‘N‘AND t.mobile_state=‘Y‘ AND t.mobile=‘mobile‘ GROUP BY t.mobile,t.mobile_state,t.is_delete HAVING COUNT(*)>1 ) )
以上是关于oracle查询结果如果某个字段重复的时候就取另一个字段值最小的数据的主要内容,如果未能解决你的问题,请参考以下文章
用PLSQL查询oracle数据库中某个表,查询结果如果包含两个字段时就会卡死