I don't understand why there are different results when using an ORDER BY
clause in an analytic COUNT
function.
Using a simple example:
with req as
(select 1 as n, 'A' as cls
from dual
union
select 2 as n, 'A' as cls
from dual)
select req.*, count(*) over(partition by cls) as cnt from req;
gives the the following result:
N CLS CNT
2 A 2
1 A 2
Whereas, when adding an ORDER BY
in the analytic clause, the result is different!
with req as
(select 1 as n, 'A' as cls
from dual
union
select 2 as n, 'A' as cls
from dual)
select req.*, count(*) over(partition by cls order by n) as cnt from req;
CNT column changed:
N CLS CNT
1 A 1
2 A 2
Can someone explain please?
Thanks