Obtenga registros con el <whatever> más alto / más pequeño por grupo

¿Como hacer eso

El título anterior de esta pregunta era "using rank (@Rank: = @Rank + 1) en consultas complejas con subconsultas: ¿funcionará? "porque estaba buscando una solución usando rangos, pero ahora veo que la solución publicada por Bill es mucho mejor.

Pregunta original:

Estoy tratando de componer una consulta que tome el último registro de cada grupo dado un orden definido:

SET @Rank=0;

select s.*
from (select GroupId, max(Rank) AS MaxRank
      from (select GroupId, @Rank := @Rank + 1 AS Rank 
            from Table
            order by OrderField
            ) as t
      group by GroupId) as t 
  join (
      select *, @Rank := @Rank + 1 AS Rank
      from Table
      order by OrderField
      ) as s 
  on t.GroupId = s.GroupId and t.MaxRank = s.Rank
order by OrderField

Expresión@Rank := @Rank + 1 normalmente se usa para el rango, pero para mí parece sospechoso cuando se usa en 2 subconsultas, pero se inicializa solo una vez. ¿Funcionará de esta manera?

Y segundo, ¿funcionará con una subconsulta que se evalúa varias veces? Como subconsulta en la cláusula where (o having) (otra forma de cómo escribir lo anterior):

SET @Rank=0;

select Table.*, @Rank := @Rank + 1 AS Rank
from Table
having Rank = (select max(Rank) AS MaxRank
              from (select GroupId, @Rank := @Rank + 1 AS Rank 
                    from Table as t0
                    order by OrderField
                    ) as t
              where t.GroupId = table.GroupId
             )
order by OrderField

¡Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta