Ich habe versucht, eine kumulative Summe einer booleschen Spalte pro Tag zu erhalten. Ich habe verschiedene Möglichkeiten mit entweder #sum
versucht und auch #distinct
nachgeschlagen (durch Blick auf andere Beiträge auf Stack Overflow), aber nicht in der Lage, eine dieser Methoden auf eine Weise erfolgreich implementieren, wie ich meine Hash sehen möchten.Abfrage einer kumulativen Summe einer booleschen Spalte pro Tag
Derzeit ist dies die Abfrage Ich habe:
Device.where(boxed: true).group('date(updated_at)').count
Was mich ergibt dies:
{Fri, 17 Apr 2015=>48, Sat, 18 Apr 2015=>44, Sun, 19 Apr 2015=>5, Mon, 20 Apr 2015=>48}
Aber ich würde es so aussehen mag:
{Fri, 17 Apr 2015=>48, Sat, 18 Apr 2015=>92, Sun, 19 Apr 2015=>97, Mon, 20 Apr 2015=>145}
I verwende Rails 4 und Postgres. Jede Hilfe wäre willkommen.
Edit:
ich dies tun landete, um die kumulative Summe zu erhalten, obwohl dies wahrscheinlich nicht der beste Weg, oder elegant überhaupt ist:
data_all_time = Device.where(boxed: true).group('date(updated_at)').count
data_all_time_keys = data_all_time.keys
data_all_time_values = data_all_time.values
sum = 0
data_all_time_values.map!{|x| sum += x}
all_time_sum_tuple = data_all_time_keys.zip(data_all_time_values)
ich etwas am Ende immer wie Dies ist:
[["April 17, 2015", 48], ["April 18, 2015", 92], ["April 19, 2015", 97], ["April 20, 2015", 145]]
Was funktioniert jetzt, bis ich einen besseren Weg finden kann.
Welcher ist der Unterschied zwischen 18 Apr 2015 => 44 und 18 Apr 2015 => 92 zum Beispiel? Können Sie uns zeigen, einige Daten des Geräts Tabelle – Tanorix
@Tanorix Dieser Unterschied ist, dass am 18. April 44 Geräte boxed wurden, aber insgesamt 92 Boxen wurden bis jetzt verpackt, indem die Summe für 17. April und 18. April hinzugefügt. –
Sie möchten also, dass die Zählungen insgesamt und nicht pro Datum gezählt werden? –