oracle 实现分组后排序取第一条

1.这里要将数据按PARTNER_ID 分组并且按时间排序取第一

select * from (
SELECT ROW_NUMBER()over(PARTITION by PARTNER_ID ORDER BY VISIT_DATE DESC) as ro,v.PARTNER_ID,v.VISIT_DATE
  from VISIT_INFO v
 where ADDRESS is not null
   and ADDRESS != ' '
) dual  where ro=1

 

关于 PARTITION by 大家可以参考 https://www.cnblogs.com/cjm123/p/8033639.html 

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java 8中的Stream API来对流进行分组排序。具体步骤如下: 1.使用Collectors.groupingBy()方法对流进行分组,该方法接受一个Function参数,用于指定分组的条件。 2.使用Collectors.summingInt()方法对分组后的结果进行求和,该方法接受一个ToIntFunction参数,用于指定求和的条件。 3.使用Map.entrySet()方法获分组后的结果集,并使用Stream.sorted()方法对结果集进行排序,该方法接受一个Comparator参数,用于指定排序规则。 4.使用Stream.collect()方法将排序后的结果转换为Map类型。 下面是一个示例代码,假设有一个Student类,包含name、age和score三个属性: ```java import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Student> students = Arrays.asList( new Student("Tom", 18, 80), new Student("Jerry", 19, 90), new Student("Lucy", 18, 85), new Student("Lily", 19, 95), new Student("Bob", 18, 75), new Student("Mike", 19, 85) ); Map<Integer, Integer> result = students.stream() .collect(Collectors.groupingBy(Student::getAge, Collectors.summingInt(Student::getScore))) .entrySet().stream() .sorted(Map.Entry.comparingByKey()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); System.out.println(result); } } class Student { private String name; private int age; private int score; public Student(String name, int age, int score) { this.name = name; this.age = age; this.score = score; } public String getName() { return name; } public int getAge() { return age; } public int getScore() { return score; } } ``` 该示例代码将学生按照年龄进行分组,并计算每个年龄段的学生总分数,最后按照年龄从小到大排序输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值