Agrupar por mes en MySQL
En este tutorial, aprenderemos cómo agrupar valores por mes en una base de datos MySQL.
Las empresas y organizaciones deben encontrar datos de usuarios o clientes en función de sus tendencias de compra o uso en meses. Una empresa en particular puede inferir datos reveladores si se da cuenta de los meses óptimos para impulsar el negocio, y MySQL nos ayuda con esta tarea.
MySQL nos proporciona la función date_format()
, que contiene dos valores principales. El primero es el nombre de la columna que se está considerando y el segundo es el período de tiempo para la agrupación.
Una vez que nuestra función está configurada, podemos agrupar diferentes períodos de tiempo usando la cláusula GROUP BY
en MySQL. La sintaxis de esta operación es la siguiente.
select date_format(date_column, '%M'),sum(any_other_column)
from name_of_the_table
group by date_format(date_column, '%M');
Esta sintaxis asume que deseamos agrupar los valores de any_other_column
por mes. Por lo tanto, proporciona el total de una columna particular para cada mes en nuestra tabla.
Veamos este método en acción.
Pero antes de comenzar, creemos un conjunto de datos ficticio creando una tabla, student_semester_date
con algunas filas.
-- create the table student_semester_date
CREATE TABLE student_semester_date(
stu_id int,
stu_date date,
stu_marks int
);
Luego, insertemos algunas filas en esta tabla usando la consulta a continuación.
-- insert rows in the table student_semester_date
insert into student_semester_date(stu_id,stu_date,stu_marks)
values(1,'2020-10-01',150),
(2,'2020-10-10',100),
(3,'2020-11-05',250),
(4,'2020-11-15',150),
(5,'2020-12-01',350),
(6,'2020-12-21',250);
Las dos consultas anteriores crean una tabla con filas con los nombres y apellidos de los estudiantes.
SELECT * FROM student_semester_date;
Producción :
stu_id stu_date stu_marks
1 2020-10-01 150
2 2020-10-10 100
3 2020-11-05 250
4 2020-11-15 150
5 2020-12-01 350
6 2020-12-21 250
Intentemos agrupar las notas de diferentes alumnos en función de los meses de la columna stu_date
. Básicamente, implicaría contar las calificaciones totales de cada mes en nuestra tabla student_semester_date
.
Agrupar por mes en MySQL
Como hemos visto en la sintaxis anterior, podemos operar agrupando notas por mes en nuestra tabla student_semester_date
con la ayuda de la siguiente consulta.
select date_format(stu_date, '%M') as Month,sum(stu_marks) as total_marks
from student_semester_date
group by date_format(stu_date, '%M');
El código anterior devuelve las notas totales de cada mes en la tabla student_semester_date
.
Significaría que para noviembre tendríamos 400 ya que hay dos entradas en nuestra tabla para noviembre con marcas 250 y 150 (250 + 150 = 400). El resultado de la consulta antes mencionada es el siguiente.
Month total_marks
October 250
November 400
December 600
Month
y total_marks
en el código antes mencionado para una mejor legibilidad con la palabra clave AS
en MySQL.Por lo tanto, con la ayuda de la función date format()
y la sentencia group by
, podemos agrupar de manera eficiente los valores por mes en una tabla particular en MySQL.