| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Is it possible to have a max function in SQL that exlcudes outliners(values 20x average)
In article <lXhd5.29262$Ra6.433828_at_zombie.newscene.com>,
dsad_at_hotmail.com (dsad) wrote:
> we need to get max of a value for an account over a time period, but
we want
> to exclude any values that are 20x greater or less than average for
that
> account over the period
>
> any ideas?
>
You certainly won't want to use 'between' for the value comparisons as that is inclusive of the boundary conditions; you can use 'between' for the date comparisons, though. Let's try this:
declare
a_val number;
mval number;
cursor get_av is
select avg(value) from mytable;
cursor get_maxval (aval in number, s_dt in date, e_dt in date) is
select max(value)
from mytable
where value > aval/20
and value < aval*20
and proc_dt between s_dt and e_dt;
begin
open get_av;
fetch get_av into a_val;
close get_av;
open get_maxval(a_val, sysdate-1, sysdate);
fetch get_maxval into mval;
close get_maxval;
....
After the proper max is computed you can do with it what you like; I've read the other offerings and I believe this to be more along the lines of what you are looking for since this variant excludes any values >= 20*(avg value) and any values <= (avg value/20).
-- David Fitzjarrell Oracle Certified DBA Sent via Deja.com http://www.deja.com/ Before you buy.Received on Wed Jul 19 2000 - 00:00:00 CDT
![]() |
![]() |