Esto te sucede solo porque MySQL rompe la lógica de SQL.
Digamos que tenemos tabla emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
y la consulta:
select dept, ename
from emp
group by dept;
¿obtendrás qué? Deberías obtener dos líneas, porque hay dos departamentos, pero la consulta solicita un nombre. Para el 20 esta claro pero para el 10 el motor debe devolver que?
Debería devolver un error. No puedo adivinar qué nombre dar. Oracle dispara un error:su error, pero MySQL obtiene un nombre (no se garantiza cuál). Eso es engañoso y puede generar errores.
Las consultas correctas serían:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
y
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Después de corregir esta parte, deberá resolver el
COUNT(*) over() AS rowcount
parte. En Oracle, AFAIK, no puede mezclar funciones analíticas con agrupar por consultas.