SQL – Nivel 3 – Test 2
Tests similares
Respuestas:
1. ¿Qué hace la función RANK() en una consulta con funciones de ventana?
Respuesta: Asigna un rango único a cada fila en la partición
Explicación:
La función RANK() ordena las filas dentro de una partición y asigna un rango. Si hay empates, el siguiente rango salta el número correspondiente.
Ejemplo:
SELECT nombre, salario,
RANK() OVER (ORDER BY salario DESC) AS rango
FROM empleados;
Si dos empleados tienen el mismo salario, ambos reciben el mismo rango, y el siguiente número se salta.
2. ¿Qué hace la cláusula MERGE en una consulta SQL?
Respuesta: Fusiona datos de una tabla origen en una tabla destino
Explicación:
MERGE combina operaciones como INSERT, UPDATE y DELETE dependiendo de si las filas coinciden entre la tabla origen y la tabla destino.
Ejemplo:
MERGE INTO tabla_destino AS destino
USING tabla_origen AS origen
ON destino.id = origen.id
WHEN MATCHED THEN
UPDATE SET valor = origen.valor
WHEN NOT MATCHED THEN
INSERT (id, valor) VALUES (origen.id, origen.valor);
3. ¿Qué es un índice de árbol B (B-tree index) en bases de datos?
Respuesta: Una estructura de datos que mejora la velocidad de recuperación de datos
Explicación:
Un índice de tipo B-tree organiza los datos de forma jerárquica, lo que permite búsquedas rápidas y eficientes para operaciones como SELECT, WHERE, y ORDER BY.
4. Considera la consulta:
SELECT nombre, salario,
NTILE(4) OVER (ORDER BY salario DESC) AS cuartil
FROM empleados;
Respuesta: Divide a los empleados en 4 grupos basados en su salario
Explicación:
La función NTILE(n) distribuye las filas en n grupos (o cuartiles, deciles, etc.) con cantidades iguales o casi iguales.
5. ¿Qué hace la función LEAD en SQL?
Respuesta: Accede a datos de una fila posterior en la misma tabla
Explicación:
LEAD permite acceder a valores de filas posteriores sin necesidad de un JOIN.
Ejemplo:
SELECT nombre, salario,
LEAD(salario) OVER (ORDER BY salario DESC) AS siguiente_salario
FROM empleados;
6. ¿Cuál es la diferencia entre INNER JOIN y LEFT JOIN?
Respuesta: INNER JOIN requiere que las columnas de unión coincidan, LEFT JOIN no
Explicación:
- INNER JOIN: Devuelve solo filas donde hay coincidencia en ambas tablas.
- LEFT JOIN: Devuelve todas las filas de la tabla izquierda y las coincidencias de la derecha (rellenando con NULL si no hay coincidencias).
7. ¿Qué es una vista materializada en SQL?
Respuesta: Una tabla física que almacena los resultados de una consulta
Explicación:
A diferencia de una vista normal, una vista materializada almacena físicamente los datos para mejorar el rendimiento en consultas complejas.
Ejemplo:
CREATE MATERIALIZED VIEW vista_ventas AS
SELECT departamento, SUM(ventas) AS total_ventas
FROM ventas
GROUP BY departamento;
8. Dada la consulta:
SELECT *
FROM empleados e1
WHERE salario > (
SELECT AVG(salario)
FROM empleados e2
WHERE e2.departamento = e1.departamento
);
Respuesta: Lista empleados con salario superior al promedio de su departamento
Explicación:
La subconsulta calcula el salario promedio para cada departamento, y luego la consulta principal selecciona a los empleados que ganan más que ese promedio.
9. ¿Cuál es el propósito de la cláusula WITH ROLLUP en una consulta GROUP BY?
Respuesta: Producir subtotales y totales generales en los resultados agrupados
Explicación:
WITH ROLLUP genera resultados jerárquicos con subtotales por grupo y un total general.
Ejemplo:
SELECT departamento, SUM(salario) AS total_salarios
FROM empleados
GROUP BY departamento WITH ROLLUP;
10. ¿Qué es una clave candidata en una base de datos relacional?
Respuesta: Una clave que podría ser utilizada como clave primaria
Explicación:
Una clave candidata es un conjunto mínimo de columnas que puede identificar de manera única una fila en una tabla. De estas, se elige la clave primaria.