Изцяло несъответстващият на стандартите MySQL GROUP BY може да се емулира от DISTINCT ON на Postgres . Помислете за това:
MySQL:
SELECT a,b,c,d,e FROM table GROUP BY a
Това осигурява 1 ред на стойност на a (коя, всъщност не знаете). Всъщност можете да се досетите, защото MySQL не знае за хеш агрегатите, така че вероятно ще използва сортиране... но ще сортира само по a , така че редът на редовете може да бъде случаен. Освен ако не използва индекс с няколко колони вместо сортиране. Е, така или иначе, не е посочено от заявката.
Postgres:
SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c
Това осигурява 1 ред на стойност на a , този ред ще бъде първият в сортирането според ORDER BY посочено от заявката. Просто.
Имайте предвид, че тук не е съвкупност, която изчислявам. Така че GROUP BY всъщност няма смисъл. DISTINCT ON има много повече смисъл.
Rails е женен за MySQL, така че не съм изненадан, че генерира SQL, който не работи в Postgres.