数据比对:Oracle数据累加(oracle数据累加)
数据比对是数据分析和挖掘的基础工作,大数据时代,关系数据库可以以SQL语句快速实现数据比对。Oracle数据库在数据累加上有一些特殊的方法,可以大大提高实现数据比对的效率。
假设我们要比对的表字段是 f1,以 g1 为分组累加, Oracle 语句如下:
select g1,sum(f1) as gf
from table
group by g1
having sum(f1) >= 10
上述 SQL 语句的功能是按照字段 g1 分组累加字段 f1,当统计出来的和达到 10 时,才会有结果返回。累加的作用也就是用来过滤满足条件的记录,得到满足需求的数据。
SQL语句的累加方法也可以改成Windowing(窗口函数)方法。假设表字段还有一个字段 f2,Windowing 的 Oracle 语句如下:
select distinct
g1,sum(f1) over(partition by g1) as gf
from table
having sum(f1) over(partition by g1) >= 10
Windowing 一样用来实现数据比对,可以提高比对效率。不同之处是Window 穿越字段 g1 后,将统计出来的和与10 进行比较,而不是比较单行数值。
如果要实现累加的要求,Oracle数据库也提供了重复性语句的处理方式。例如 ,我们的要求是按照字段 g1 进行累加处理,并且每个分组的累加不能重复,Oracle 语句如下:
select row_number() over (partition by g1 order by f2) as rowno,
g1,f1
from table
where rowno=1
having sum(f1) >=10
注意:在 Oracle 数据库中,如果要实现数据累加,可以使用SQL 语句,Window 函数和重复语句三种方式。