Clásula order by
La cláusula order by
se utiliza para ordenar los resultados de una consulta en función de ciertos criterios especificados en la consulta. Ordena el resultado generado por for
y let
después de que han sido filtradas por la cláusula where
.
La sintaxis básica de la cláusula order by
es la siguiente:
for $variable in //elemento
where condition
order by criteria1, criteria2, ... criteriaN descending
return result
donde:
$variable
representa el elemento que se va a buscar.condition
es la expresión booleana que se evalúa para determinar si se incluye o no un elemento en el resultado.- Los criterios son los campos por los cuales se desea ordenar los resultados. Por defecto, el orden es ascendiente, pero se puede añadir el modificador
descending
para ordenar por orden descendiente. result
es la información que se desea recuperar.
Consideremos la siguiente consulta:
for $libro in //libro
order by $libro/autor, $libro/título
return $libro/título
En este ejemplo, se utiliza:
- La cláusula
order by
para ordenar los libros por autor y luego por título. La cláusulaorder by
especifica que se deben ordenar los libros primero por autor y luego por título. - La cláusula
return
se utiliza para recuperar el título de cada libro en el orden especificado.
Consideremos, ahora, la siguiente consulta:
for $estudiante in //estudiante
let $promedio := avg($estudiante/calificaciones/calificacion)
order by $promedio descending
return $estudiante/nombre
En este ejemplo, se utiliza:
- La cláusula
let
para calcular el promedio de calificaciones de cada estudiante antes de ordenarlos. - La cláusula
order by
para ordenar los estudiantes por su promedio de calificaciones de mayor a menor. La cláusulaorder by
especifica que se debe ordenar los estudiantes por su promedio de calificaciones, utilizando el operadordescending
para indicar que se deben ordenar de mayor a menor. - La cláusula
return
se utiliza para recuperar el nombre de cada estudiante en el orden especificado.