The thing is - SQL is native to the RDBMS - not the backend environment.
So you typically end up with repetitive data type conversions SQL <-> native
which often leads to an ad hoc framework.
By all means learn SQL first and design your queries SQL first. But once your have those basics down it’s worthwhile to invest some time into something like Programming Ecto just so you don’t have to explicitly deal with even the most basic data type conversions. On top of that you’ll be able to compose dynamic queries much more easily.
Learning and using Ecto without some appreciation for SQL can in some cases be problematic. But once you understand SQL, Ecto can remove some of the annoying, repetitive detail that could otherwise clutter your code.