Прием №1, чтобы писать хорошие читаемые SQL-запросы — это табличные выражения (CTE). Люди их боятся, а зря.
Любой подзапрос:
select a, b, c
from (X)
where e = fМеханически превращается в CTE:
with cte_name as (X)
select a, b, c
from cte_name
where e = fВот и вся наука, не надо читать увесистую книгу по SQL или проходить курсы.
Существует миф, что «CTE медленные», но на современных СУБД это не так. Да и вообще — как с любым утверждением о медленности чего-либо, всегда можно сравнить два варианта (подзапрос и CTE), если сомневаешься.
Кроме обычных CTE бывают еще рекурсивные — вот это реально злые ребята. А обычные прекрасны, используйте их.