2009-10-12 7 views
5

J'ai une base de données avec quelques champs que j'aimerais additionner. Mais ce n'est pas le gros problème, je veux regrouper ces champs par le mois où ils ont été créés. ActiveRecord a automatiquement créé un champ nommé "created_at". Donc ma question comment puis-je grouper le résultat par mois, puis additionner les champs pour chaque mois?Sélectionner, regrouper et additionner les résultats de la base de données

Mise à jour avec le code

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

Ceci est le code que j'ai maintenant. Géré pour regrouper par mois, mais ne parvient pas à résumer deux de mes champs, "mins" et "salaire" dont j'ai besoin pour résumer

Répondre

1

il fixe à l'aide: sélectionnez lors de l'obtention de la requête, inputing sélectionne manuellement

@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

Je ne sais pas s'il y a une requête SQL que vous utilisez pour le faire (sans changer la structure de votre table actuelle). Cependant, vous le faites avec quelques lignes de code.

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 

J'ai vu ce lien sur le côté droit de cette question. Je suppose que d'autres bases de données, outre MySQL ont des fonctions similaires.

mysql select sum group by date

2

Vous pouvez utiliser active record calculations pour ce faire. Certains exemples de code peut être

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

De toute évidence avec le mois de mise en garde est spécifique à mysql, donc si vous développiez sur une base de données SQLite cela ne fonctionnerait pas.

+0

voir modifier dans le premier poste pour le code que j'ai à ce moment. Est-ce que quelque chose comme toi a écrit? – ThoKra

+0

Lien mis à jour: http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html – Meekohi

Questions connexes