Това ви се случва само защото MySQL нарушава логиката на SQL.
Да кажем, че имаме таблица emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
и заявката:
select dept, ename
from emp
group by dept;
ще получите какво? Трябва да получите два реда, защото има два отдела, но заявката изисква ename. За 20 е ясно но за 10 двигателя какво трябва да върне?
Трябва да върне грешка. Не мога да отгатна какво име да дам. Oracle издава грешка - вашата грешка, но MySQL получава име (не е гарантирано кое). Това е подвеждащо и може да доведе до грешки.
Правилните заявки биха били:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
и
--all enames and groups
select dept, ename
from emp
group by dept, ename;
След като коригирате тази част, ще трябва да разрешите
COUNT(*) over() AS rowcount
част. В Oracle, AFAIK, не можете да смесвате аналитични функции с групиране по заявки.