Consultas recursivas
SQL · Unidad 10: WITH y conjuntos
- Plan completo
- SQL
- 10 ejercicios
En la empresa, cada unión de empleados consigo misma subía un escalón, de una persona a su jefe. Para llegar de Rita a Carmen hicieron falta dos, porque sabías que eran dos escalones. ¿Y si no sabes cuántos hay? Hace falta una consulta que se repita sola.
La más pequeña cuenta. WITH RECURSIVE abre un paso que lee de sí mismo. Tiene un punto de partida, el 1, después UNION ALL, y una consulta que toma la última fila y fabrica la siguiente. El WHERE se le pregunta a la fila de la que se parte. Con el 4 se cumple, y nace el 5. Con el 5 ya no, y ahí termina.
WITH RECURSIVE numeros AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1
FROM numeros
WHERE n < 5
)
SELECT n
FROM numeros;Devuelve
| n |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
El resto de la explicación está en la lección, que es del plan completo.
Ejercicios de esta lección
Se hacen en la app, que los corrige al momento y explica por qué.
1. Predice la salida
¿Qué devuelve esta consulta?
2. Ordena las líneas
Ordena la consulta que cuenta del 1 al 10, ni un número más. Sobran dos líneas.
3. Encuentra el bug
Otra cuenta regresiva, del 5 al 1. La cuenta sube en vez de bajar, y no para. La app enseña las primeras 1000 filas y corta. ¿Qué línea tiene el problema?
4. Opción múltiple
La consulta que sube desde Fabio no lleva ningún
WHEREque la pare. ¿Por qué termina al llegar a Carmen?5. Predice la salida
Greta es la ilustradora, la única persona de Marca. Su
jefe_ides 1, el de Carmen. El de Carmen está vacío. ¿Qué devuelve esta consulta?6. Completa el código
La cadena de Lidia, que es programadora y depende de Paula. Completa de dónde lee la consulta que se repite.
7. Predice la salida
A Carmen le apuntan con su
jefe_idtres personas, Marco, Paula y Greta. A Marco, dos. A Paula, tres. A los demás, nadie. ¿Qué devuelve esta consulta?8. Ordena las líneas
Rita gana 1900, y le han prometido 150 más cada año. ¿En qué año alcanza los 2600 que gana Fabio? Ordena la consulta que da el año y el salario de cada año, hasta el primero en que llega o pasa de 2600. Sobran dos líneas.
9. Encuentra el caso que falla
La lista de todos los que están por encima de Fabio, hasta la dirección. Hoy son Paula y Carmen. Alguien la escribió con uniones, un escalón en la primera mitad y dos en la segunda. ¿Con cuál de estos cambios deja fuera a alguien?
10. Escribe el código
¿Cuántos escalones separan a Nadia de la dirección? El punto de partida ya está, con su
nivelen 0. Escribe la consulta que se repite y la de abajo, para que devuelva dos columnas en este orden, el nombre y el nivel de Nadia y de cada persona por encima de ella. Del nivel más alto al más bajo, con la dirección arriba. El paso hace dee, yempleados, dej.
Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.