2009-10-12 14 views
5

Tengo una base de datos con algunos campos que me gustaría sumar. Pero ese no es el gran problema, quiero agrupar esos campos para el mes en que fueron creados. ActiveRecord creó automáticamente un campo llamado "created_at". Entonces mi pregunta; ¿cómo puedo agrupar el resultado por mes, luego sumar los campos de cada mes?Seleccionar, agrupar y sumar los resultados de la base de datos

actualiza con código de

@hours = Hour.all(:conditions => "user_id = "+ @user.id.to_s, 
        :group => "strftime('%m', created_at)", 
        :order => 'created_at DESC') 

Este es el código que tengo ahora. Gestionado para agrupar por mes, pero no logra sumar dos de mis campos, "mins" y "salario" que necesito sumar

Respuesta

1

arreglaron mediante el uso de: seleccionar al conseguir la consulta, inputing selecciona manualmente

@hours = Hour.all(:conditions => "user_id = "+ @user.id.to_s, 
        :select => "created_at, SUM(time) time", 
        :group => "strftime('%m', created_at)", 
        :order => 'created_at DESC') 
1

No sé si hay una consulta SQL que use para hacerlo (sin cambiar su estructura de tabla actual). Sin embargo, lo haces con algunas líneas de código.

records = Tasks.find(:conditions => {..}) 
month_groups = records.group_by{|r| r.created_at.month} 
month_groups.each do |month, records| 
    sum stuff.. blah blah blah.. 
end 

Vi este enlace en el lado derecho de esta pregunta. Supongo que otras bases de datos, además de MySQL, tienen funciones similares.

mysql select sum group by date

2

Puede utilizar active record calculations para hacer esto. Un código de ejemplo podría ser

Model.sum(:column_name, :group => 'MONTH("created_at")') 

Obviamente, con la salvedad MES es MySQL específica, por lo que si se estaba desarrollando en una base de datos SQLite esto no funcionaría.

+0

ver edición en primer mensaje para el código que tengo en este momento. Hizo algo como usted escribió. – ThoKra

+0

Enlace actualizado: http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html – Meekohi

Cuestiones relacionadas