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:
$variablerepresenta el elemento que se va a buscar.conditiones 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
descendingpara ordenar por orden descendiente. resultes 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 bypara ordenar los libros por autor y luego por título. La cláusulaorder byespecifica que se deben ordenar los libros primero por autor y luego por título. - La cláusula
returnse 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
letpara calcular el promedio de calificaciones de cada estudiante antes de ordenarlos. - La cláusula
order bypara ordenar los estudiantes por su promedio de calificaciones de mayor a menor. La cláusulaorder byespecifica que se debe ordenar los estudiantes por su promedio de calificaciones, utilizando el operadordescendingpara indicar que se deben ordenar de mayor a menor. - La cláusula
returnse utiliza para recuperar el nombre de cada estudiante en el orden especificado.