2013-01-04 4 views
2

Dans une base de données avec les prix horaires des dix dernières années, la requête suivante regroupe les prix par jour, produit un prix moyen journalier et renvoie le prix moyen pour chaque jour dans la base de données :Obtenir la moyenne pour une période donnée

Trade.average(:price, :group => "DATE_TRUNC('day', date)") 

Mais, cela renvoie une réponse trop grande, et je ne besoin d'obtenir des prix moyens pour les 7 derniers jours. Que puis-je ajouter à cette requête pour effectuer uniquement la moyenne pour les 7 derniers jours de données comme indiqué dans la colonne date?

Répondre

4

Quelque chose comme cela devrait fonctionner:

Trade.where('date >= ?', 7.days.ago).average(:price, :group => "DATE_TRUNC('day', date)") 
+1

Merci Mischa! Fonctionne parfaitement. J'ai essayé de faire ceci pendant une heure, mais en les enchaînant avec la syntaxe incorrecte. Vous avez fait une différence. Salutations :) – ac360

+0

De rien. Content que ça a marché! – Mischa

+0

@ ac360 Si cela répond à votre question, n'oubliez pas de [l'accepter] (http://meta.stackexchange.com/a/5235/158402). –

Questions connexes