In questo scenario per usare il metodo che ti ho detto su devi fare un po di "sporcature" tipo rinunciare al groupBy e fare il raggruppamento a mano ordinando per ruolo e giocare un po' con qualche if.
Ci sarebbe un altro sistema piu appropriato che invece di usare l'indice usa l'id dell'utente. Bisogna usare dei campi nascosti ma non ricordo esattamente come si fa. Domani mattina dall'ufficio lo rileggo dal manuale e vedo se puo risolvere il problema.