They all take a bit of time to get used to. You see I even made a mistake in the output of left join.
SQL is like anything else. You build and test one section at a time. Get the subquery tested, then test the raw output, then add the aggregates, etc.
For the most part, there is going to be multiple correct ways to do a query, meaning the answers will be equivalent. In your example, you could also use windowing or CTEs, but those aren't available on every system, plus probably a tad too advanced for where you are right now. Ultimately, it breaks down to what is going to be fastest on a given data set. It's very difficult to know without trying multiple queries and measuring.
Aliasing is very important to get used to. You just have to keep doing it until it gets easy. It's among the quickest indicator of how well the person knows SQL, IMO.
Subqueries are basically tables / views. Treat them the same.
This is a good explanation of joins (this is SQL Server syntax, which may not be the same as what you are using):
https://blog.codinghorror.com/a-visu...-of-sql-joins/