What is the simplest way of excluding the current row from the result of an analytic?
There may be a simpler way, but here is a solution.  If the current row is the minimum foo for the bar, then we always want the next (lead) foo.  When there is only one foo for a bar the lead will always be null and for every other case we really do want the minimum foo for the bar.

with w as (select level as foo, decode(level,8,1,mod(level,4))*100 as bar
   from dual connect by level&lt;9) 
select foo, bar
   , case 
        when foo = min(foo) over (partition by bar) 
           then lead(foo) over (partition by bar ORDER BY foo)
        else min(foo) over (partition by bar) 
     end pseudolowest
from w;


Unfortunately rows excluding current row doesn't exist.