分析函数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;