sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo agrupo por mes y año cuando solo tengo un campo de fecha y hora?

Necesitas agrupar por extractos.

SELECT 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    EXTRACT(MONTH FROM when),
    EXTRACT(YEAR FROM when)

Y si necesita esas columnas, entonces

SELECT
    EXTRACT(MONTH FROM when) as month, 
    EXTRACT(YEAR FROM when) as year, 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    month,
    year

Por supuesto, puede agregar ORDER BY y use nombres cortos también:

SELECT 
    EXTRACT(MONTH FROM when) as month, 
    EXTRACT(YEAR FROM when) as year, 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    month, 
    year
ORDER BY 
    year DESC, 
    month DESC