Ich möchte mehrere Aggregatfunktionen gleichzeitig ausführen, zB um die max- und min-IDs nach Status gruppiert zu bekommen:
%Vor%Das funktioniert nicht (zumindest mit Rails 3.1.1) - Sie erhalten einen Fehler beim minimalen Aufruf, der besagt, dass er nicht auf Fixnum definiert ist.
%Vor%Ich könnte root sql dafür machen - aber ich frage mich, ob es eine höhere Ebene / Rails-Option gibt ...
Danke, Chris
Ich glaube, @topek hat Recht, dass Sie die Berechnungsfunktionen nicht so verketten können. Ich denke, Sie müssen SQL in einem select
-Prädikat verwenden, z. B .:
Ich habe das gerade in einem eigenen Projekt getestet und es scheint wie erwartet zu funktionieren.
Ich hatte ein ähnliches Problem, das ich gelöst habe, indem ich in Rails 4 group with pluck benutzt habe. Zum Beispiel
%Vor%Funktioniert auch mit having, order usw. und mit berechneten Spalten.
%Vor%Prost
Ich denke nicht, dass dies mit diesen Aggregatfunktionen möglich ist, da sie einen Wert und keinen Bereich zurückgeben, siehe Dokumentation . Sie alle verwenden die Methode calculate, die, wie Sie sehen, eine Zahl zurückgibt:
%Vor%Wenn Sie dies tun möchten, müssen Sie die Abfrage manuell erstellen.
Hier ist ein Beispiel:
%Vor%Tags und Links ruby ruby-on-rails activerecord