First of all, your syntax is incorrect, use this as starters:
Code:
INSERT INTO monthly
   SELECT DISTINCT AVG (mem), dname, AVG (cpu), vdate, AVG (disku), COUNT (*)
              FROM ms
             WHERE TO_NUMBER (TO_CHAR (vdate, 'MM')) =
                                TO_NUMBER (TO_CHAR (TRUNC (SYSDATE), 'MM'))
                                - 1
          GROUP BY dname, TO_CHAR (vdate, 'MM');