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 添加好友时请说明是百度知道帮组解决问题的朋友.再次感谢

参考技术A SELECT A.NAME,MIN(RESULTS) FROM A
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或者不加。

本回答被提问者采纳
参考技术C select name,max(results) from a group by name

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=NAND t.mobile_state=Y   AND t.mobile=mobile
                                                        GROUP BY t.mobile,t.mobile_state,t.is_delete HAVING COUNT(*)>1
                                                                                    )
                                ) 

 

以上是关于oracle查询结果如果某个字段重复的时候就取另一个字段值最小的数据的主要内容,如果未能解决你的问题,请参考以下文章

oracle 查询两个字段的值重复的记录

用PLSQL查询oracle数据库中某个表,查询结果如果包含两个字段时就会卡死

如何在Oracle数据库查询中为没有数据的字段赋值为NULL

在oracle中查询数据

oracle通过一个字段分组,取另一个字段的最大值

THINKPHP怎么查询一张表中某个字段数据重复次数最多的前几名!