Tengo una aplicación Rails 3 que mantiene puntajes altos. Lo estoy alojando en Heroku, que usa postgresql como db.¿Cómo abordar GROUP BY en PostgreSQL usando Rails?
Necesito extraer los puntajes más altos de la tabla de puntajes. La tabla tiene columnas score
y user_id
. Que estaba trabajando en MySQL con lo siguiente:
Score.order('score DESC').group('user_id').limit(25)
Esto sitúa puntuación más alta de cada usuario.
Cuando puse la aplicación en Heroku, me sale el siguiente error psql PGError: ERROR: column "scores.id" must appear in the GROUP BY clause or be used in an aggregate function
He leído por ahí, pero no he encontrado una respuesta clara. ¿Cuál es la forma más óptima de volver a crear la consulta anterior para que funcione con PostgreSQL?
Gracias!
Tim
Estoy intentando utilizar DISTINCT ON como se ha dicho por otros. Score.select ('DISTINCT ON (user_id) id, user_id, score') order ('user_id, score DESC'). Limit (25) y me aparece el siguiente error: "PGError: ERROR: column id_list.alias_0 does not existe LÍNEA 1: ... AS id_list ORDER BY id_list.al ... ". Ni siquiera estoy indicando una columna con el nombre de 'id_list', así que no entiendo por qué está por venir. – Tim