Ho un'app Rails 3 che mantiene alti i punteggi. Lo sto ospitando su Heroku che usa postgresql come db.Come affrontare GROUP BY in PostgreSQL usando Rails?
Ho bisogno di estrarre i punteggi migliori dalla tabella dei punteggi. La tabella contiene le colonne score
e user_id
. Si stava lavorando in MySQL con il seguente:
Score.order('score DESC').group('user_id').limit(25)
Questo classifica punteggio più alto di ogni utente.
Quando ho messo l'applicazione su Heroku, ottengo il seguente errore psql PGError: ERROR: column "scores.id" must appear in the GROUP BY clause or be used in an aggregate function
ho letto in giro, ma non ho trovato una risposta chiara. Qual è il modo migliore per ricreare la query precedente per lavorare con PostgreSQL?
Grazie!
Tim
Sto cercando di usare DISTINCT ON come già detto da altri. Score.select ('DISTINCT ON (user_id) id, user_id, score'). Order ('user_id, score DESC'). Limit (25) e ottengo il seguente errore: "PGError: ERRORE: colonna id_list.alias_0 non esiste LINEA 1: ... AS id_list ORDINA DA id_list.al ... ". Non sto nemmeno affermando una colonna con il nome di 'id_list', quindi non capisco perché sta arrivando. – Tim