Ciao,
ipotizzando che la select da te indicata sia questa, quindi eliminiamo dubbi:

SELECT COM_ID, SUM(QU) AS TOT, SUM(PREZZO) AS PREZZO, TIPO FROM
(SELECT
(PREZZO*SUM(QU)) AS PREZZO,
SUM(QU) AS QU,
COM_ID,
VOCE,
quinto_menu_day.TIPO
FROM quinto_ordine
JOIN quinto_menu_day ON quinto_ordine.VOCE = quinto_menu_day.PIATTO
WHERE quinto_ordine.COM_ID = '24'
GROUP BY VOCE
ORDER BY ORDINE
) AS MAIN
GROUP BY TIPO


- mancano le group by sulla select interna... mi sembra strano che dici "facendo la select interna non ho errori...". Anche sul prezzo devi metterla in group by oppure applicare una funzione di aggregazione
- mancano le group by sulla select esterna


SELECT COM_ID, SUM(QU) AS TOT, SUM(PREZZO) AS PREZZO, TIPO FROM
(SELECT
(PREZZO*SUM(QU)) AS PREZZO,
SUM(QU) AS QU,
COM_ID,
VOCE,
quinto_menu_day.TIPO
FROM quinto_ordine
JOIN quinto_menu_day ON quinto_ordine.VOCE = quinto_menu_day.PIATTO
WHERE quinto_ordine.COM_ID = '24'
GROUP BY VOCE , COM_ID, quinto_menu_day.TIPO
ORDER BY ORDINE
) AS MAIN
GROUP BY TIPO , COM_ID

Comincia ad applicare queste modifiche e facci sapere come va

Ciao
Mik