分析函数over是Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。

PARTITION BY 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,

有一个表bat22

mat12id  mat12name  bat22id                        price

1101      XXX             200701010111               0.8

1101      XXX             200701010103               0.9

1101      XXX             200701010133               0.8

1102      YYY            200701010112               0.9

1103      ZZZ             200701010113               0.1

我想获得如下结果,唯一的mat12id,如果有重复记录的取最大值那个.

mat12id  mat12name  bat22id                        price

1101      XXX             200701010133               0.8

1102      YYY            200701010112               0.9

1103      ZZZ             200701010113               0.1

select a.*

from

(select bat22.*,

row_number() over(partition by MAT12ID, MAT12NAME order by bat22id desc) rn

from bat22) a

where a.rn=1;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐