PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Colonna delle funzioni della finestra di Postgres con Rails

prova questo:

Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")

dovrebbe restituirti oggetti Personaggio con un attributo rank, come documentato qui . Tuttavia, questo potrebbe non essere indipendente dal database e tende a creare confusione se si passano gli oggetti.

un'altra soluzione (costosa) consiste nell'aggiungere una colonna di rango alla tabella e fare in modo che un callback ricalcoli il rango di tutti i record utilizzando .order ogni volta che un record viene salvato o distrutto.

modifica :

un'altra idea adatta per query su record singolo può essere vista qui