MySQL è totalmente non conforme agli standard GROUP BY può essere emulato da DISTINCT ON di Postgres . Considera questo:
MySQL:
SELECT a,b,c,d,e FROM table GROUP BY a
Questo fornisce 1 riga per valore di a (quale, non lo sai davvero). Bene, in realtà puoi indovinare, perché MySQL non conosce gli aggregati hash, quindi probabilmente utilizzerà un ordinamento ... ma ordinerà solo su a , quindi l'ordine delle righe potrebbe essere casuale. A meno che non utilizzi un indice multicolonna invece dell'ordinamento. Bene, comunque, non è specificato dalla query.
Postgres:
SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c
Questo fornisce 1 riga per valore di a , questa riga sarà la prima nell'ordinamento in base a ORDER BY specificato dalla query. Semplice.
Nota che qui non è un aggregato che sto calcolando. Quindi GROUP BY in realtà non ha senso. DISTINCT ON ha molto più senso.
Rails è sposato con MySQL, quindi non sono sorpreso che generi SQL che non funziona in Postgres.