Sto impazzendo su una query e non so più dove sbattere la testa

Ho una vista fatta ad hoc da cui devo estrarre dei dati, in particolare una sorta di riepilogo di operazioni in attesa di esecuzione o eseguite

Nel caso specifico, devo ordinare i risultati per: agenzia, utente, media, affitto, rif

La particolarità è che devo estrarre tutti i record che hanno
- invio=0 (e fin qua ci sono)
- invio=1 E op_es<>3 E id_proposta <> dagli id che hanno invio=0

io ho fatto questa sql ma qualcosa ancora è da sistemare perchè mi estrae troppi recordo
codice:
SELECT max(id_pubb), id_proposta, agenzia, utente_nome, utente_cognome, media, rif, zona, adiacenze, prezzo, prezzo_annotazioni, invio, affitto, crc, id_media, op_sist, op_es, op_rich, id_agenzia, id_funzionario 
FROM V_media 
WHERE id_agenzia = 3 AND id_funzionario = 99 AND id_media IN (6) 
GROUP BY agenzia, utente_nome, utente_cognome, media, invio, affitto, id_proposta 
ORDER BY agenzia, utente_nome, utente_cognome, media, invio, affitto, rif, id_pubb DESC