Poderse hacer, se puede (yo los hago similares), pero el problema básico que tienes es que no se puede hacer con una sola consulta, sino con un proceso de consultas, una de las cuales tiene un agrupamiento WITH ROLLUP.
En definitiva, son varios pasos, los que son más simples de realizar por medio de stored procedures y con tablas temporales.
El tema es que habitualmente este tipo de consultas se construye con herramientas OLAP, como es el caso de Pentaho, que es un open source que puede operar con MySQL.
¿Quieres intentarlo a mano o le das una mirada a
Pentaho?