No estoy seguro de cuál es exactamente su problema o cómo "no funciona", debido a la falta de detalles en su pregunta. Pero al menos dos factores pueden afectar la clasificación de tal manera que obtenga resultados diferentes en MySQL y PostgreSQL.
El primero es collation . En particular si estás jugando con 9.1 beta. La última vez que instalé MySQL (que fue hace un tiempo, por lo que podrían haber solucionado esto desde entonces), estaba recopilando las cosas como latin-1/swedish de forma predeterminada, frente a utf-8/english para PostgreSQL.
El otro es nulo. MySQL siempre coloca estos últimos si la memoria sirve. Por el contrario, PostgreSQL los coloca constantemente al final de los índices btree y, por lo tanto, los coloca en último lugar al ordenar asc y primero al ordenar desc. Puede cambiar este comportamiento ordenando usando nulls first/nulls last .
En su caso particular, supongo que desea order by rating desc nulls last
, a diferencia del comportamiento predeterminado que coloca valores nulos primero.