Mam aplikację Rails 3, która utrzymuje wysokie wyniki. Hostuję go na Heroku, który używa postgresql jako db.Jak podejść do GROUP BY w PostgreSQL przy użyciu Rails?
Potrzebuję wyodrębnić najlepsze wyniki z tabeli wyników. Tabela ma kolumny score
i user_id
. To działa w mysql z następujących czynności:
Score.order('score DESC').group('user_id').limit(25)
To plasuje najlepszy wynik każdego użytkownika.
Kiedy umieścić aplikację na Heroku, otrzymuję następujący błąd PSQL PGError: ERROR: column "scores.id" must appear in the GROUP BY clause or be used in an aggregate function
Czytałem wokół, ale nie znalazłem jednoznacznej odpowiedzi. Jaki jest najbardziej optymalny sposób na odtworzenie powyższej kwerendy do pracy z PostgreSQL?
Dzięki!
Tim
Próbuję użyć DISTINCT ON jak stwierdzono przez innych. Score.select ("DISTINCT ON (id_użytkownika) id, user_id, score"). Order ("user_id, score DESC"). Limit (25) i pojawia się następujący błąd: "PGError: ERROR: column id_list.alias_0 nie istnieje LINIA 1: ... AS id_list ORDER BY id_list.al ... ". Nie mówię nawet o kolumnie z nazwą "id_list", więc nie rozumiem, dlaczego tak się dzieje. – Tim