Isso acontece com você apenas porque o MySQL quebra a lógica do SQL.
Digamos que temos a tabela emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
e a consulta:
select dept, ename
from emp
group by dept;
você vai conseguir o que? Você deve pegar duas linhas, porque são dois departamentos, mas a consulta pede ename. Para 20 é claro mas para 10 o motor deve retornar o que?
Deve retornar um erro. Não consigo adivinhar qual ename dar.Oracle dispara um erro - seu erro, mas o MySQL recebe um ename (não garantido qual). Isso é enganoso e pode conduzir bugs.
As consultas corretas seriam:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
e
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Depois de corrigir esta parte, você terá que resolver o
COUNT(*) over() AS rowcount
papel. No oracle, AFAIK, você não pode misturar funções analíticas com agrupar por consultas.