Lassen Sie mich Ihnen zuerst sagen, was ich will, möchte ich ein Diagramm eines Wachstums eines Benutzers Investmentfonds Portfolio machen.Wie konvertiert man alle täglichen Daten eines Jahres in monatliche Daten
Jetzt habe ich einen Benutzer, der im letzten Jahr in ein Portfolio investiert.
Jetzt habe ich eine Aufgabe, die alle täglichen Wachstumswerte eines Benutzers Portfolio in Benutzerportfolio Wachstumstabelle speichert.
Jetzt ab dem aktuellen Datum habe ich alle täglichen Werte eines Portfolios Wachstum in meinem Benutzerportfolio Wachstumstabelle.
Was ich will, ist das monatliche Wachstum eines Benutzer-Portfolios in einem Diagramm zu zeigen.
Also, meine Frage hier ist, wie konvertiere ich alle Tageswerte zu monatlichen Werten vom Datum seiner Investition? Also, dass ich es in einem Diagramm zeigen kann.
UserPortfolio Schema
# == Schema Information
#
# Table name: user_portfolios
#
# id :integer not null, primary key
# user_id :integer not null
# portfolio_name :string
# amount :integer not null
# investment_plan :string not null
# duration :integer default(1), not null
# risk_level :string not null
# created_at :datetime not null
# updated_at :datetime not null
UserPortfolioGrowth
# == Schema Information
#
# Table name: user_portfolio_growths
#
# id :integer not null, primary key
# user_portfolio_id :integer
# appreciated_value :float
# created_at :datetime not null
# updated_at :datetime not null
#
Danke!
Edit: Ich wurde gebeten, für das, was ich von Tin Man tut hatte: Also, das ist Demo von dem, was ich bisher versucht hatte.
Inititally habe ich versucht, diese Art von Code:
start = 10.months.ago.to_date
end_date = Date.today
(start..end_date).each do |date|
puts date.end_of_month
end
, für die ich eine riesige Liste von Enddaten bekommen, wie es über alle Termine itterates:
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
............. and so on...
Aber alles, was ich wollte, war apprictaed Betrag des letzten Datums des Monats, also wenn ich über 10 Monate iteriere, ist alles, was ich will, 10 Werte. Also habe ich versucht, den Index um 30 Tage im Voraus um die folgende Logik zu erhöhen.
start = 10.months.ago.to_date
end_date = Date.today
(start..end_date).each do |date|
puts date.end_of_month
date = date.end_of_month + 1.day
end
Aber noch bin ich immer die folgende Ausgabe:
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
2015-07-31
........................... and so on
ich aber den Indexwert zu erhöhen könnte das Ergebnis ändern, aber es kam nicht. Kann mir bitte jemand eine Lösung vorschlagen?
Edit: Ich glaube, ich fand die Antwort, statt itterating über einen Datumsbereich, habe ich while-Schleife Zustand end_date
Dies zu überprüfen ist, was ich getan habe:
start = 10.months.ago.to_date
end_date = Date.today
date_i = start
while(date_i < end_date)
puts date_i.end_of_month
date_i = date_i + 1.month
end
Ausgang:
2015-07-31
2015-08-31
2015-09-30
2015-10-31
2015-11-30
2015-12-31
2016-01-31
2016-02-29
2016-03-31
2016-04-30
Schreiben eine SQL keine Option ist? Bitte geben Sie Ihre Tabelle und Modellstruktur an. – Uzbekjon
getan, und es ist gut, auch wenn ich den letzten Wert jedes Monats vom Datum der Benutzerinvestition zu aktuellen Daten erhalten. – VoidZero
Vorgeschlagene Antworten sind in Ordnung, aber Sie sollten das DB für Sie tun lassen. Auf diese Weise würden Sie Ressourcen sparen. Welche DB benutzen Sie? – Uzbekjon