Opa,
Nem sempre subquery é melhor que consultar duas vezes. Dependendo da subquery, o banco faz
uma consulta extra por linha do resultado da query principal. Se a principal tiver 100 linhas, são 101 consultas.
Tudo bem que não existe o tráfego de rede nem nada, existe a possibilidade de um cache da consulta e tudo mais.
Luis, não se assuste. Sua dúvida não é primitiva... no padrão SQL 2003 inventaram as funções ROW_NUMBER(), RANK() e DENSE_RANK() pra isso. Só vi isso no Microsoft SQL Server, no entanto.
Dá uma olhada nessa página que fala sobre como calcular ranks com MySQL:
http://rpbouman.blogspot.com/2009/09/mysql-another-ranking-trick.html
[]s