Das passiert Ihnen nur, weil MySQL die Logik von SQL bricht.
Nehmen wir an, wir haben Tabelle emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
und die Abfrage:
select dept, ename
from emp
group by dept;
Bekommst du was? Du solltest zwei Zeilen bekommen, weil es zwei Abteilungen gibt, aber die Abfrage fragt nach E-Namen. Für 20 ist klar, aber für 10 soll der Motor was zurückgeben?
Es sollte einen Fehler zurückgeben. Ich kann nicht erraten, welchen E-Namen ich geben soll. Oracle gibt einen Fehler aus - Ihr Fehler, aber MySQL erhält einen E-Namen (nicht garantiert welcher). Das ist irreführend und kann zu Fehlern führen.
Korrekte Abfragen wären:
select dept, max(ename) --the latest, alaphabeticaly
from emp
group by dept;
und
--all enames and groups
select dept, ename
from emp
group by dept, ename;
Nachdem Sie diesen Teil korrigiert haben, müssen Sie das Problem
lösenCOUNT(*) over() AS rowcount
Teil. In Oracle, AFAIK, können Sie Analysefunktionen nicht mit Group-by-Abfragen mischen.