Allora, nella query interna ho eseguito la differenza tra il numero di record e quelli che avevano valore pari a 1. Ho assegnato a state valore 1 per tutti i record per i quali era stato pagato tutto e valore 0 per quelli in cui c'è ancora qualcosa da pagare.
A questo punto ho fatto una semplice join come avevi già tentato di fare tu e nella query esterna ho messo queste due righe

sum(if(state=1,1,0)) as ok,
sum(if(state=0,1,0)) as non

che non fanno altro che verificare il valore di state ricavato in precedenza. Quando è pari ad 1 incrementa di una unità il valore delle fatture evase, quando invece state precedentemente è risultato pari a 0 allora incremento il numero di fatture inevase. Tutto ciò ovviamente raggruppando per data come avevi richiesto.