Ti succede solo perché MySQL rompe la logica di SQL.
Diciamo che abbiamo table emp:
id ename dept
1 mark 10
2 John 10
3 Mary 10
4 Jane 20
e la domanda:
select dept, ename
from emp
group by dept;
otterrai cosa? Dovresti ottenere due righe, perché ci sono due dipartimenti, ma la query richiede ename. Per 20 è chiaro ma per 10 il motore dovrebbe restituire cosa?
Dovrebbe restituire un errore. Non riesco a indovinare quale nome dare. Oracle genera un errore:il tuo errore, ma MySQL ottiene un nome (non garantito quale). Questo è fuorviante e potrebbe causare bug.
Le query corrette sarebbero:
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;
Dopo aver corretto questa parte, dovrai risolvere il
COUNT(*) over() AS rowcount
parte. In Oracle, AFAIK, non puoi combinare funzioni analitiche con query raggruppate per.