queryLab · software_de_entrenamiento en espera
Nivel 1 · Básico · SQL · DQL

[SQL 03] Ordenar, alias, concatenar y CASE

ORDER BY, LIMIT/OFFSET, concatenación y lógica condicional con CASE.
0 / 6 retos resueltos 📘 Clase 9 · «concatenar columnas» · SQL COMANDOS (CASE)
Al terminar esta práctica podrás…
  • Ordenar por una o varias columnas, ascendente o descendente, y ubicar los NULL.
  • Obtener los top-N y paginar resultados con LIMIT y OFFSET.
  • Construir textos concatenando columnas (|| / CONCAT).
  • Clasificar filas con expresiones CASE WHEN … THEN … ELSE … END.

Sin ORDER BY, el orden de las filas no está garantizado. ORDER BY ordena por una o más columnas (o expresiones o alias), en orden ascendente (ASC, por defecto) o descendente (DESC). Combinado con LIMIT permite obtener «los 5 mejores» y paginar.

Para unir textos, el estándar SQL (Oracle, PostgreSQL, SQLite) usa el operador ||; MySQL usa la función CONCAT().

CASE es el «si… entonces…» de SQL: evalúa condiciones en orden y devuelve el valor de la primera que se cumple. Sirve para clasificar, traducir códigos o calcular según reglas de negocio.

Orden lógico de evaluación: FROM → WHERE → SELECT → ORDER BY → LIMIT. Por eso en ORDER BY sí puedes usar un alias del SELECT, pero en WHERE no.

Sintaxis
SELECT col1 || ' ' || col2 AS texto,
       CASE WHEN cond1 THEN valor1
            WHEN cond2 THEN valor2
            ELSE valor3 END AS categoria
FROM tabla
ORDER BY col3 DESC, col1 ASC
LIMIT n OFFSET m;
ORDER BY … DESC
De mayor a menor. Varias columnas desempatan en orden.
NULLS FIRST / LAST
Dónde ubicar los nulos al ordenar (SQLite, Oracle y PostgreSQL).
LIMIT n OFFSET m
Salta m filas y muestra n: paginación.
|| / CONCAT
first_name || ' ' || last_name une textos.
CASE
Devuelve un valor según condiciones; sin ELSE devuelve NULL.
Alias en ORDER BY
Puedes ordenar por un alias definido en el SELECT.
SQLite / Oracle / PostgreSQL
first_name || ' ' || last_name
MySQL
CONCAT(first_name, ' ', last_name)
Oracle (paginación)
OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY

1 · Ejemplos guiados · ejecuta y modifica cada bloque

01Los mejores pagados
Ordenamos de mayor a menor y nos quedamos con 10.
sql-orden-alias.sql
Presiona «ejecutar» para ver el resultado.
02Ordenar por varias columnas
Primero por departamento (ascendente) y, dentro de cada uno, por salario descendente.
sql-orden-alias.sql
Presiona «ejecutar» para ver el resultado.
03Concatenar el nombre completo
|| une textos; ordenamos por el alias.
sql-orden-alias.sql
Presiona «ejecutar» para ver el resultado.
04Clasificar con CASE
Cada salario recibe una categoría según reglas evaluadas en orden.
sql-orden-alias.sql
Presiona «ejecutar» para ver el resultado.
05Ubicar los NULL al ordenar
Los sin comisión (NULL) quedan al final con NULLS LAST.
sql-orden-alias.sql
Presiona «ejecutar» para ver el resultado.
06Paginación
Página 3 de 5 filas: salta 10 y muestra 5. Siempre pagina con un ORDER BY estable.
sql-orden-alias.sql
Presiona «ejecutar» para ver el resultado.

⚠ Errores frecuentes

  • Usar LIMIT sin ORDER BY: «los primeros 5» no tiene sentido si el orden no está definido.
  • Ordenar por salario con empates y esperar un orden fijo: agrega una segunda columna para desempatar.
  • Usar el alias en el WHERE: WHERE salario_anual > 100000 falla porque WHERE se evalúa antes que SELECT.
  • Olvidar el END de un CASE, o poner condiciones en un orden en que la primera «tapa» a las demás.
  • Concatenar con + (SQL Server) en SQLite u Oracle: suma números en vez de unir textos.

2 · Retos con corrección automática

Escribe tu solución y pulsa comprobar (Ctrl + Enter). Tu consulta y la solución se ejecutan en bases limpias y se comparan los resultados: no importan los nombres de las columnas, sí los datos (y el orden, cuando el reto lo pide). Si te atascas, usa la pista o mira el resultado esperado.

3 · Preguntas tipo solemne

1. ¿Qué cláusula se evalúa después del SELECT y por eso puede usar sus alias?
2. ¿Qué devuelve un CASE sin ELSE cuando ninguna condición se cumple?
3. En MySQL, ¿cómo se concatena nombre y apellido con un espacio?
4. ¿Qué muestra ORDER BY salary DESC LIMIT 3 OFFSET 3?