Solución:
GROUP BY YEAR(record_date), MONTH(record_date)
Consulte las funciones de fecha y hora en MySQL.
GROUP BY DATE_FORMAT(record_date, '%Y%m')
Nota (principalmente, a potenciales votantes negativos). Actualmente, esto puede no ser tan eficaz como otras sugerencias. Aún así, lo dejo como una alternativa, y también una que puede servir para ver qué tan rápidas son otras soluciones. (Porque realmente no se puede distinguir entre rápido y lento hasta que vea la diferencia). Además, a medida que pasa el tiempo, se podrían realizar cambios en el motor de MySQL con respecto a la optimización para hacer esta solución, en algunos (quizás, no tanto distante) en el futuro, para llegar a ser bastante comparable en eficiencia con la mayoría de los demás.
prueba este
SELECT COUNT(id)
FROM stats
GROUP BY EXTRACT(YEAR_MONTH FROM record_date)
La función EXTRACT (unidad DESDE la fecha) es mejor ya que se utiliza menos agrupación y la función devuelve un valor numérico.
La condición de comparación al agrupar será más rápida que la función DATE_FORMAT (que devuelve un valor de cadena). Intente usar la función | campo que devuelve un valor que no es una cadena para la condición de comparación de SQL (DÓNDE, TENIENDO, ORDEN POR, AGRUPAR POR).