PostgreSQL: ON против WHERE во внешних соединениях - когда перемещение условия меняет результат
Во внешних соединениях условие в ON вычисляется при выполнении соединения, а условие в WHERE фильтрует уже построенный результат, поэтому перенос фильтра между ними может изменить то, какие строки выживут. Для внутренних соединений размещение - чисто стилистический вопрос.
postgresql / sql / outer-join / left-join / join-conditions