Beh.... la query di mariox non mi sembra sia quella adatta.
Primo perché a te le news serve pubblicarle in ordine di data decrescente, secondo poi perché non le separi per mese/anno.

Io avevo lo stesso tuo problema ed ho aggirato con un barbatrucco che, sicuramente non sarà né performante né il metodo migliore, ma di sicuro funziona.

Innanzi tutto, nella tabella dove inserisco le news, oltre al campo data in formato timestamp, ho aggiunto due campi: uno per il mese ed uno per l'anno scritti in formato numerico.

Nella pagina delle news, poi faccio il seguente ciclo:

Codice PHP:
$anno_in_corso date("Y");
$mese_in_corso date("m");

for (
$i $mese_in_corso$i >= 1$i--) {

$sql "
       SELECT id, testo, link, quantaltro
       FROM news
       WHERE anno = '
$anno_in_corso'
       AND mese = '
$i'
       ORDER BY data DESC
       "
;
       
$query mysql_query($sql);

// qui scrivi la routine per stamprare a video le notizie

mysql_free_result($query);


Con questo ciclo fai una query per ogni mese.
Indubbiamente carichi il server ma almeno risolvi.

Se poi qualcuno avesse un metodo migliore e più performante, saremmo tutti ben contenti di vederlo!