SQL

Tutorial SQL: Clasificación de resultados con ORDER BY

Aprende a ordenar resultados en SQL con ORDER BY, usando ASC, DESC, orden multicolumna y expresiones para consultas avanzadas.

Aprende SQL y certifícate

Ordenación ASC/DESC

La ordenación de resultados es una de las operaciones más comunes y útiles en SQL. Cuando recuperamos datos de una base de datos, a menudo necesitamos que aparezcan en un orden específico para facilitar su análisis o presentación. La cláusula ORDER BY nos permite controlar exactamente cómo se ordenan los registros en el conjunto de resultados.

Por defecto, cuando utilizamos ORDER BY con una columna, SQL ordena los resultados en orden ascendente (del valor más bajo al más alto). Sin embargo, podemos modificar explícitamente esta dirección de ordenación utilizando las palabras clave ASC (ascendente) y DESC (descendente).

Sintaxis básica

La sintaxis para especificar la dirección de ordenación es:

SELECT columna1, columna2, ...
FROM tabla
ORDER BY columna1 [ASC|DESC];

Donde:

  • ASC indica ordenación ascendente (es el valor predeterminado)
  • DESC indica ordenación descendente

Ordenación ascendente (ASC)

La ordenación ascendente es el comportamiento predeterminado de ORDER BY. Organiza los datos del valor más bajo al más alto, siguiendo estas reglas:

  • Para valores numéricos: del menor al mayor (1, 2, 3...)
  • Para texto: orden alfabético (A a Z)
  • Para fechas: de la más antigua a la más reciente
  • Los valores NULL aparecen primero en MySQL y últimos en PostgreSQL

Veamos un ejemplo con una tabla de productos:

SELECT nombre, precio
FROM productos
ORDER BY precio ASC;

Este código ordenará los productos del más barato al más caro. Como ASC es el valor predeterminado, también podríamos escribirlo así:

SELECT nombre, precio
FROM productos
ORDER BY precio;

Ambas consultas producirían el mismo resultado:

nombre          | precio
----------------+--------
Lápiz           | 0.75
Cuaderno        | 2.50
Bolígrafo       | 3.25
Calculadora     | 15.99
Tablet          | 299.99

Ordenación descendente (DESC)

La ordenación descendente invierte el orden natural, organizando los datos del valor más alto al más bajo:

  • Para valores numéricos: del mayor al menor (100, 99, 98...)
  • Para texto: orden alfabético inverso (Z a A)
  • Para fechas: de la más reciente a la más antigua
  • Los valores NULL aparecen últimos en MySQL y primeros en PostgreSQL

Para ordenar en sentido descendente, debemos especificar explícitamente la palabra clave DESC:

SELECT nombre, precio
FROM productos
ORDER BY precio DESC;

Esta consulta mostrará los productos del más caro al más barato:

nombre          | precio
----------------+--------
Tablet          | 299.99
Calculadora     | 15.99
Bolígrafo       | 3.25
Cuaderno        | 2.50
Lápiz           | 0.75

Ejemplos prácticos

Ordenación de datos numéricos

Supongamos que tenemos una tabla de empleados y queremos ver quiénes tienen los salarios más altos:

SELECT nombre, apellido, salario
FROM empleados
ORDER BY salario DESC;

Esta consulta mostrará primero a los empleados con salarios más altos.

Ordenación de texto

Para ordenar clientes alfabéticamente por apellido:

SELECT id_cliente, nombre, apellido
FROM clientes
ORDER BY apellido ASC;

Ordenación de fechas

Para ver los pedidos más recientes primero:

SELECT id_pedido, fecha_pedido, total
FROM pedidos
ORDER BY fecha_pedido DESC;

Comportamiento con valores NULL

Es importante entender cómo se comportan los valores NULL en la ordenación, ya que varía según el sistema de gestión de bases de datos:

SELECT nombre, fecha_ultima_compra
FROM clientes
ORDER BY fecha_ultima_compra ASC;

En MySQL, los clientes sin fecha de última compra (NULL) aparecerán primero, mientras que en PostgreSQL aparecerán al final.

Si queremos controlar específicamente dónde aparecen los valores NULL, podemos usar la cláusula NULLS FIRST o NULLS LAST en PostgreSQL:

-- PostgreSQL: forzar que los NULL aparezcan primero
SELECT nombre, fecha_ultima_compra
FROM clientes
ORDER BY fecha_ultima_compra ASC NULLS FIRST;

-- PostgreSQL: forzar que los NULL aparezcan al final
SELECT nombre, fecha_ultima_compra
FROM clientes
ORDER BY fecha_ultima_compra ASC NULLS LAST;

En MySQL, podemos simular este comportamiento usando la función ISNULL():

-- MySQL: forzar que los NULL aparezcan al final en ordenación ascendente
SELECT nombre, fecha_ultima_compra
FROM clientes
ORDER BY ISNULL(fecha_ultima_compra), fecha_ultima_compra ASC;

-- MySQL: forzar que los NULL aparezcan primero en ordenación ascendente
SELECT nombre, fecha_ultima_compra
FROM clientes
ORDER BY ISNULL(fecha_ultima_compra) DESC, fecha_ultima_compra ASC;

Consideraciones de rendimiento

La ordenación es una operación que consume recursos del servidor, especialmente con grandes conjuntos de datos. Algunas recomendaciones:

  • Crear índices en las columnas que se utilizan frecuentemente para ordenar puede mejorar significativamente el rendimiento.
  • Limitar el número de filas con LIMIT después de ordenar puede reducir la carga de procesamiento.
  • Evitar ordenar por columnas calculadas o expresiones complejas cuando sea posible.
-- Más eficiente con un índice en la columna precio
SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 10;  -- Solo muestra los 10 productos más caros

La ordenación ascendente y descendente es una herramienta fundamental en SQL que nos permite presentar los datos de manera significativa y útil para los usuarios finales, facilitando el análisis y la interpretación de la información almacenada en nuestras bases de datos.

Orden multicolumna

En muchas situaciones prácticas, ordenar los resultados por una sola columna no es suficiente. SQL nos permite establecer criterios de ordenación múltiples mediante la especificación de varias columnas en la cláusula ORDER BY. Esta funcionalidad es especialmente útil cuando la primera columna de ordenación contiene valores duplicados y necesitamos un criterio adicional para determinar el orden final de los registros.

Cuando utilizamos orden multicolumna, SQL aplica los criterios de ordenación de izquierda a derecha. Esto significa que primero ordena por la primera columna especificada, y cuando encuentra valores iguales, utiliza la segunda columna para determinar el orden entre ellos, y así sucesivamente.

Sintaxis básica

La sintaxis para la ordenación multicolumna es:

SELECT columna1, columna2, ...
FROM tabla
ORDER BY columna1 [ASC|DESC], columna2 [ASC|DESC], ...;

Cada columna en la lista de ORDER BY puede tener su propia dirección de ordenación (ascendente o descendente).

Ejemplos prácticos

Ordenación por apellido y nombre

Supongamos que tenemos una tabla de estudiantes y queremos ordenarlos alfabéticamente por apellido y, en caso de apellidos iguales, por nombre:

SELECT id_estudiante, nombre, apellido, curso
FROM estudiantes
ORDER BY apellido ASC, nombre ASC;

Resultado:

id_estudiante | nombre   | apellido  | curso
--------------+----------+-----------+--------
103           | Ana      | García    | 2B
105           | Carlos   | García    | 3A
101           | María    | López     | 1A
104           | Juan     | Martínez  | 2A
102           | Pedro    | Rodríguez | 1B

Observa cómo Ana García aparece antes que Carlos García porque, al tener el mismo apellido, el segundo criterio (nombre) determina el orden.

Combinación de direcciones de ordenación

Podemos combinar ordenaciones ascendentes y descendentes en una misma consulta. Por ejemplo, para mostrar productos ordenados por categoría (alfabéticamente) y dentro de cada categoría, del más caro al más barato:

SELECT nombre, categoria, precio
FROM productos
ORDER BY categoria ASC, precio DESC;

Resultado:

nombre          | categoria    | precio
----------------+--------------+--------
Teclado gaming  | Electrónica  | 89.99
Auriculares     | Electrónica  | 59.99
Mouse           | Electrónica  | 29.99
Silla ejecutiva | Mobiliario   | 199.99
Mesa de oficina | Mobiliario   | 149.99
Lámpara de mesa | Mobiliario   | 45.50

Casos de uso comunes

Ordenación por fecha y hora

En sistemas que registran eventos, a menudo necesitamos ordenar por fecha y, para eventos del mismo día, por hora:

SELECT id_evento, fecha, hora, descripcion
FROM eventos
ORDER BY fecha ASC, hora ASC;

Ordenación por jerarquía organizacional

Para visualizar empleados por departamento y dentro de cada departamento por nivel jerárquico:

SELECT nombre, departamento, nivel_jerarquico, salario
FROM empleados
ORDER BY departamento ASC, nivel_jerarquico DESC;

Ordenación por relevancia y popularidad

En sistemas de búsqueda, podemos ordenar resultados primero por relevancia y luego por popularidad:

SELECT producto, relevancia_busqueda, num_ventas
FROM resultados_busqueda
WHERE termino_busqueda = 'smartphone'
ORDER BY relevancia_busqueda DESC, num_ventas DESC;

Ordenación por posición de columna

Además de ordenar por nombre de columna, SQL permite ordenar por la posición numérica de la columna en la lista SELECT. Aunque esta práctica no se recomienda para código de producción (reduce la legibilidad), es útil conocerla:

SELECT nombre, apellido, fecha_nacimiento
FROM estudiantes
ORDER BY 2 ASC, 3 DESC;

Esta consulta ordena primero por la segunda columna (apellido) en orden ascendente y luego por la tercera columna (fecha_nacimiento) en orden descendente.

Ordenación con expresiones

También podemos ordenar por el resultado de una expresión. Por ejemplo, para ordenar productos por margen de beneficio:

SELECT nombre, precio_venta, costo, (precio_venta - costo) AS margen
FROM productos
ORDER BY (precio_venta - costo) DESC;

O de forma equivalente:

SELECT nombre, precio_venta, costo, (precio_venta - costo) AS margen
FROM productos
ORDER BY margen DESC;

Consideraciones de rendimiento

La ordenación multicolumna puede afectar al rendimiento, especialmente con grandes conjuntos de datos. Algunas recomendaciones:

  • Crear índices compuestos que incluyan todas las columnas utilizadas en la ordenación, en el mismo orden.
  • Limitar el número de columnas de ordenación a las estrictamente necesarias.
  • Considerar la posibilidad de materializar resultados frecuentes en vistas indexadas.
-- Creación de un índice compuesto para optimizar la ordenación
CREATE INDEX idx_apellido_nombre ON estudiantes(apellido, nombre);

Diferencias entre MySQL y PostgreSQL

Ambos sistemas manejan la ordenación multicolumna de manera similar, pero existen algunas diferencias:

  • Sensibilidad a mayúsculas/minúsculas: Por defecto, MySQL realiza ordenaciones de texto sin distinguir entre mayúsculas y minúsculas, mientras que PostgreSQL sí las distingue a menos que se especifique lo contrario.

  • Ordenación de NULL: Como vimos en la sección anterior, MySQL coloca los valores NULL primero en ordenación ascendente, mientras que PostgreSQL los coloca al final por defecto.

-- PostgreSQL: ordenación con control explícito de NULL
SELECT nombre, apellido, fecha_graduacion
FROM estudiantes
ORDER BY apellido ASC, 
         nombre ASC,
         fecha_graduacion DESC NULLS LAST;

La ordenación multicolumna es una herramienta poderosa que nos permite organizar datos de manera jerárquica, reflejando relaciones naturales entre los datos y facilitando su análisis y presentación de forma estructurada y lógica.

Ordenar con expresiones

La cláusula ORDER BY en SQL no está limitada a ordenar únicamente por columnas existentes en la tabla. Una de sus características más flexibles es la capacidad de ordenar resultados basándose en expresiones calculadas en tiempo de ejecución. Esta funcionalidad permite crear criterios de ordenación personalizados que se adaptan a necesidades específicas de análisis y presentación de datos.

Las expresiones en ORDER BY pueden incluir operaciones matemáticas, funciones integradas, manipulación de cadenas y conversiones de tipos, entre otras posibilidades. Esto amplía enormemente las opciones de ordenación disponibles más allá de los datos almacenados directamente en la base de datos.

Operaciones matemáticas en ORDER BY

Podemos utilizar operaciones aritméticas básicas para ordenar resultados según cálculos realizados sobre las columnas:

SELECT producto, precio, stock, precio * stock AS valor_inventario
FROM inventario
ORDER BY precio * stock DESC;

Esta consulta ordena los productos por el valor total del inventario (precio multiplicado por cantidad en stock), mostrando primero los productos que representan mayor inversión. Aunque la expresión precio * stock aparece tanto en la lista SELECT como en ORDER BY, no es necesario que sea así; podríamos ordenar por esta expresión sin incluirla en los resultados.

Funciones de texto

Las funciones de manipulación de texto permiten ordenaciones sofisticadas basadas en partes específicas de cadenas de texto:

SELECT nombre_completo
FROM clientes
ORDER BY SUBSTRING(nombre_completo, POSITION(' ' IN nombre_completo) + 1);

Este ejemplo ordena los clientes por su apellido, extrayendo la parte del nombre que viene después del primer espacio. Es especialmente útil cuando tenemos nombres completos almacenados en un solo campo.

En PostgreSQL, podríamos usar la función split_part() para lograr el mismo resultado de manera más elegante:

SELECT nombre_completo
FROM clientes
ORDER BY split_part(nombre_completo, ' ', 2);

Funciones de fecha

Las expresiones con fechas permiten ordenaciones basadas en componentes temporales específicos:

SELECT pedido_id, fecha_pedido, cliente
FROM pedidos
ORDER BY EXTRACT(MONTH FROM fecha_pedido), EXTRACT(DAY FROM fecha_pedido);

Esta consulta ordena los pedidos por mes y día, independientemente del año, lo que podría ser útil para analizar patrones estacionales.

Otro ejemplo práctico sería ordenar eventos por día de la semana:

-- En MySQL
SELECT evento, fecha
FROM eventos
ORDER BY DAYOFWEEK(fecha);

-- En PostgreSQL
SELECT evento, fecha
FROM eventos
ORDER BY EXTRACT(DOW FROM fecha);

Expresiones CASE en ORDER BY

Las expresiones CASE proporcionan una forma poderosa de implementar lógica condicional en la ordenación:

SELECT producto, categoria, precio
FROM productos
ORDER BY 
    CASE 
        WHEN categoria = 'Electrónica' THEN 1
        WHEN categoria = 'Libros' THEN 2
        WHEN categoria = 'Ropa' THEN 3
        ELSE 4
    END,
    precio DESC;

Esta consulta ordena los productos primero por una categoría personalizada (con Electrónica primero, luego Libros, después Ropa y finalmente el resto) y dentro de cada categoría, del más caro al más barato.

Las expresiones CASE también son útiles para implementar ordenaciones personalizadas que no siguen un patrón numérico o alfabético estándar:

SELECT nombre, nivel_habilidad
FROM candidatos
ORDER BY 
    CASE nivel_habilidad
        WHEN 'Principiante' THEN 1
        WHEN 'Intermedio' THEN 2
        WHEN 'Avanzado' THEN 3
        WHEN 'Experto' THEN 4
        ELSE 5
    END DESC;

Funciones de agregación en subconsultas

Aunque no podemos usar funciones de agregación directamente en ORDER BY para la consulta principal, podemos incorporarlas mediante subconsultas:

SELECT c.cliente_id, c.nombre, c.ciudad
FROM clientes c
ORDER BY (
    SELECT SUM(p.monto)
    FROM pedidos p
    WHERE p.cliente_id = c.cliente_id
) DESC;

Esta consulta ordena los clientes según el monto total de sus pedidos, mostrando primero a los clientes que han generado más ingresos.

Expresiones con NULLIF y COALESCE

Estas funciones son particularmente útiles para manejar valores NULL o cero en las ordenaciones:

SELECT producto, ventas_actuales, ventas_previas,
       (ventas_actuales - ventas_previas) / NULLIF(ventas_previas, 0) * 100 AS porcentaje_cambio
FROM estadisticas_ventas
ORDER BY (ventas_actuales - ventas_previas) / NULLIF(ventas_previas, 0) * 100 DESC;

La función NULLIF evita divisiones por cero al convertir los ceros en NULL, permitiendo ordenar por porcentaje de cambio sin errores.

De manera similar, COALESCE permite proporcionar valores predeterminados para ordenación cuando hay NULL:

SELECT producto, ultima_venta
FROM productos
ORDER BY COALESCE(ultima_venta, '1900-01-01') DESC;

Esta consulta ordena los productos por fecha de última venta, tratando aquellos sin ventas (NULL) como si fueran muy antiguos.

Expresiones con operadores lógicos

Los operadores lógicos permiten ordenaciones basadas en condiciones complejas:

SELECT producto, stock, punto_reorden
FROM inventario
ORDER BY stock <= punto_reorden DESC, stock ASC;

Esta consulta muestra primero los productos que necesitan reabastecimiento (stock menor o igual al punto de reorden) y los ordena de menor a mayor stock, priorizando así los más urgentes.

Consideraciones de rendimiento

Las ordenaciones basadas en expresiones pueden afectar al rendimiento, ya que:

  • La base de datos debe calcular la expresión para cada fila antes de ordenar.
  • No se pueden utilizar índices directamente para optimizar la ordenación.

Para mejorar el rendimiento:

  • Considerar la creación de columnas calculadas o índices funcionales (en bases de datos que los soporten) para expresiones utilizadas frecuentemente.
  • En PostgreSQL, se pueden crear índices sobre expresiones:
CREATE INDEX idx_apellido_extraido ON clientes (split_part(nombre_completo, ' ', 2));
  • Evaluar si es posible precalcular los valores en lugar de calcularlos en cada consulta.

Compatibilidad entre sistemas

La mayoría de las expresiones funcionan de manera similar en MySQL y PostgreSQL, pero existen algunas diferencias en las funciones disponibles y su sintaxis:

  • Para extraer partes de fechas, MySQL usa funciones como MONTH(), YEAR(), mientras que PostgreSQL prefiere EXTRACT(MONTH FROM fecha).
  • Para manipulación de cadenas, PostgreSQL ofrece funciones como split_part() que no están disponibles en MySQL.

Es recomendable consultar la documentación específica de cada sistema para aprovechar al máximo sus capacidades.

La ordenación mediante expresiones es una herramienta extremadamente versátil que permite adaptar la presentación de datos a necesidades específicas de análisis y visualización, superando las limitaciones de los datos almacenados directamente en la base de datos. Dominar esta técnica permite crear consultas más sofisticadas y útiles para los usuarios finales.

Aprende SQL online

Otros ejercicios de programación de SQL

Evalúa tus conocimientos de esta lección Clasificación de resultados con ORDER BY con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Tipos de datos

Test

Inserción de datos: INSERT INTO

Test

Filtrado de grupos de resultados con HAVING

Test

Uso de índices y particiones

Test

Renombrar tablas y bases de datos: RENAME

Test

Uso de vistas

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Test

Agrupación de resultados con GROUP BY

Test

Creación y uso de subqueries

Test

Sentencias INSERT

Código

Copias de seguridad y restauración de bases de datos

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Código

Instalación de MySQL

Test

Relaciones entre tablas

Código

Eliminación de datos: DELETE

Test

Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE

Test

Creación y uso de funciones

Test

Creación de tablas e inserción de datos con SQL

Proyecto

Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN

Test

Optimización de consultas

Test

Introducción a SQL

Test

Triggers y eventos

Test

Clasificación de resultados con ORDER BY

Test

Alterar la estructura de tablas existentes: ALTER TABLE

Test

Eliminación de datos: DELETE

Código

Instalación de PostgreSQL

Test

Creación y uso de procedimientos almacenados

Test

Consultas básicas de selección: SELECT y WHERE

Test

Vaciar tablas y bases de datos: DROP

Test

Actualización de datos: UPDATE

Test

Creación y manejo de usuarios y roles

Test

Consultas básicas de selección SELECT y WHERE

Código

Creación de bases de datos y tablas

Código

Bases de datos y tablas

Test

Actualización de datos: UPDATE

Código

Relaciones entre tablas

Test

Filtrado de valores únicos con DISTINCT

Test

Asignación y gestión de permisos

Test

Todas las lecciones de SQL

Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Sql

Introducción Y Entorno

Ddl Y Dml

Introducción Y Entorno

Instalación De Mysql

Introducción Y Entorno

Instalación De Postgresql

Introducción Y Entorno

Tipos De Datos

Introducción Y Entorno

Bases De Datos Y Tablas

Introducción Y Entorno

Sistemas De Gestión De Bases De Datos

Introducción Y Entorno

Tipos De Bases De Datos

Introducción Y Entorno

Creación De Bases De Datos Y Tablas: Create Database, Create Table

Sintaxis Dml Crud

Consultas Básicas De Selección: Select Y Where

Sintaxis Dml Crud

Inserción De Datos: Insert Into

Sintaxis Dml Crud

Actualización De Datos: Update

Sintaxis Dml Crud

Eliminación De Datos: Delete

Sintaxis Dml Crud

Introducción A Dml

Sintaxis Dml Crud

Consultar Datos: Select

Sintaxis Dml Crud

Clasificación De Resultados Con Order By

Filtros Y Clasificación

Filtrado De Valores Únicos Con Distinct

Filtros Y Clasificación

Paginación Con Limit Y Offset

Filtros Y Clasificación

Alterar La Estructura De Tablas Existentes: Alter Table

Sintaxis Ddl

Renombrar Tablas Y Bases De Datos: Rename

Sintaxis Ddl

Vaciar Tablas Y Bases De Datos: Drop

Sintaxis Ddl

Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min

Funciones Y Agrupación

Agrupación De Resultados Con Group By

Funciones Y Agrupación

Filtrado De Grupos De Resultados Con Having

Funciones Y Agrupación

Funciones Numéricas Y Matemáticas

Funciones Y Agrupación

Funciones De Fecha Y Hora

Funciones Y Agrupación

Funciones De Texto

Funciones Y Agrupación

Many To One

Asociaciones Entre Tablas

One To Many

Asociaciones Entre Tablas

One To One

Asociaciones Entre Tablas

Many To Many

Asociaciones Entre Tablas

Relaciones Entre Tablas

Joins Y Subqueries

Uso De Inner Join, Left Join, Right Join, Full Join

Joins Y Subqueries

Creación Y Uso De Subqueries

Joins Y Subqueries

Left Join Y Right Join

Joins Y Subqueries

Full Join

Joins Y Subqueries

Cross Join Y Self Join

Joins Y Subqueries

Optimización De Consultas

Sintaxis Avanzada

Uso De Índices Y Particiones

Sintaxis Avanzada

Uso De Vistas

Sintaxis Avanzada

Triggers Y Eventos

Sintaxis Avanzada

Particiones

Sintaxis Avanzada

Restricciones E Integridad

Sintaxis Avanzada

Transacciones

Sintaxis Avanzada

Vistas Materializadas

Sintaxis Avanzada

Rollback

Sintaxis Avanzada

Vistas Con Create View

Sintaxis Avanzada

Principios Acid

Sintaxis Avanzada

Manejo De Errores Y Excepciones

Sintaxis Avanzada

Funciones Ventana

Sintaxis Avanzada

Índices

Sintaxis Avanzada

Expresiones De Tabla Comunes (Cte) Con With

Sintaxis Avanzada

Creación Y Uso De Funciones

Programación En Sql

Creación Y Uso De Procedimientos Almacenados

Programación En Sql

Variables Y Control De Flujo

Programación En Sql

Creación Y Manejo De Usuarios Y Roles

Seguridad Y Administración

Asignación Y Gestión De Permisos

Seguridad Y Administración

Copias De Seguridad Y Restauración De Bases De Datos

Seguridad Y Administración

Accede GRATIS a SQL y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la sintaxis y uso básico de ORDER BY para ordenar resultados en orden ascendente y descendente.
  • Aprender a ordenar resultados por múltiples columnas con diferentes criterios y direcciones.
  • Conocer cómo ordenar resultados utilizando expresiones y funciones en la cláusula ORDER BY.
  • Entender el comportamiento de los valores NULL en la ordenación y cómo controlarlos.
  • Identificar consideraciones de rendimiento y buenas prácticas al ordenar grandes conjuntos de datos.