Ich habe zwei Modelle - Parent
und Params
, wo parent has_many params
Wie kann man einzelne SQL-Abfragen ausführen, um Spalten aus gruppierten Ergebnissen in ActiveRecord zu summieren?
Derzeit wie meine Methoden sehen (nicht, dass es unter Übergeordnete Klasse ist):
def total_sum
params.select(
'params.*, (
SUM(mono_volume_annular) +
SUM(day_volume_annular) +
SUM(night_volume_annular) +
SUM(exclusive_volume_annular)
) AS summed_volume_annular'
).group('params.id').sum(&:summed_volume_annular)
end
Wie kann ich diese SQL-Abfrage verbessern loswerden von .sum(&:summed_volume_annular)
Methodenaufruf?
Wenn ich werde versuchen, es zu fassen, ohne :summed_volume_annular
zu proc zu konvertieren, werde ich diesen Fehler: ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "summed_volume_annular" does not exist
Eine interessante Anmerkung - Wenn ich werde versuchen, das Ergebnis dieser Abfrage zu speichern
params.select('(
SUM(mono_volume_annular) +
SUM(day_volume_annular) +
SUM(night_volume_annular) +
SUM(exclusive_volume_annular)
) AS summed_volume_annular'
)
werde ich dieses Objekt [#<Parameter:0x00000009f1c7d8 id: nil>]
Seltsam bekommen, dass summed_volume_annular
fehlt ...
, wenn Sie mit 'Gruppe (‚params.id‘)' warum Sie verwenden 'innerhalb Abfrage sum' weil Ihre Gruppe immer einen Datensatz –
@VishalJAIN haben, weil ich müssen mehrere Spalten zu einem zusammenfassen. Ich nannte es 'summed_volume_annular'. Ich benutze mehrere sum() Funktionen wegen [dieser] (http://stackoverflow.com/questions/22369336/mysql-sum-multiple-columns/22369527#comment42560192_22369527) –