El tema del uso del GROUP BY ... WITH ROLLUP, es algo que puedes ver en el manual de referencia, donde hay una muy buena y detallada explicación (
http://dev.mysql.com/doc/refman/5.0/...modifiers.html).
En cuanto al uso de los IFs que hago, lo que hice fue primero ver cuál era el resultado y ver qué condiciones podría usar para hacer que la tabla devuelta pudiese incluir textos donde salieran los NULL, de modo de generar un especie de reporte.
Si eliminas toda la consulta mayor y usas sólo la subconsulta, puedes ver cómo es el conjunto devuelto en realidad, y de ese modo ver cómo y por qué puse los IFs de ese modo.
No hay mucho más que eso.
El WITH ROLLUP, si bien no es un estándar del SQL en toda regla, es una clausula que también existe en otros DBMS.