Volver a la lista de artículos Artículos
Lectura de 21 minutos

Preguntas de la entrevista SQL para analistas de datos

Índice

Tienes una próxima entrevista para un puesto de analista de datos y SQL es una de las habilidades que se pondrán a prueba. Pues bien, estas preguntas de SQL para analistas de datos están especialmente pensadas para ti.

SQL es una habilidad imprescindible en el kit de herramientas de todo analista de datos. Simplifica la extracción y manipulación de datos, lo que permite a los analistas convertir datos sin procesar en información práctica. Permite a los analistas realizar análisis ad hoc, acelerando los procesos organizativos de toma de decisiones. También fomenta la colaboración entre los analistas de datos y los administradores de bases de datos, lo que se traduce en operaciones de datos más fluidas.

Si no está seguro de por dónde empezar su viaje SQL, no busque más allá de nuestro curso SQL para análisis de datos. Este completo curso cubre todos los aspectos del análisis de datos, incluida la recuperación de datos y la generación de informes.

Sin embargo, probablemente estés aquí para preparar tu entrevista de analista de datos. Así que, sin más preámbulos, entremos en materia.

Cómo prepararse para una entrevista de analista de datos

Prepararse para una entrevista de analista de datos con éxito requiere una combinación estratégica de conocimientos técnicos y preparación específica. He aquí algunos consejos prácticos y sugerencias que le ayudarán a destacar:

  • Repase los conceptos fundamentales de SQL. Asegúrese de que conoce a fondo los conceptos fundamentales de SQL, como la consulta, el filtrado, la unión y la agregación de datos. Considere la posibilidad de inscribirse en nuestro cursoSQL para principiantes , diseñado para reforzar sus conocimientos de SQL básico.
  • Aprenda las funciones SQL estándar. Mejore su comprensión de las funciones SQL estándar, incluidas las funciones numéricas, de texto y de fecha/hora. Aprenda a manejar eficazmente los valores de NULL y a utilizar las funciones SQL para escribir consultas más eficaces.
  • Practique la creación de informes SQL. Comience con informes básicos utilizando GROUP BY, ORDER BY, y HAVING. Luego puede progresar a informes intermedios y avanzados que utilizan subconsultas, funciones de ventana y expresiones comunes de tabla (CTE).
  • Realice una evaluación de habilidades. Considere la posibilidad de realizar una evaluación de SQL para valorar su nivel de competencia. Nuestra evaluación de habilidades SQL incluye 18 tareas interactivas en línea que cubren seis áreas de competencia SQL.
  • Utilice los recursos de aprendizaje. Utilice los cursos y tutoriales en línea para mejorar su SQL. Nuestros cursos de SQL incluyen materiales de aprendizaje completos y ejercicios prácticos diseñados para ayudarle a mejorar su análisis de datos y sus consultas SQL. Si prefiere los libros, consulte nuestra lista de los mejores libros de SQL para el análisis de datos.

Preguntas básicas de la entrevista SQL

Ahora que ya hemos hablado de la importancia de aprender SQL para el análisis de datos, veamos algunas preguntas reales de SQL para entrevistas adaptadas a distintos niveles de habilidad: básico, intermedio y avanzado. Tenga a mano nuestra hoja de trucos de SQL para el análisis de datos para ayudarle con los retos que le esperan.

Pregunta 1: ¿Qué es SQL?

SQL (Structured Query Language) es un lenguaje de programación estándar para gestionar bases de datos relacionales y comunicarse con ellas. Permite a los usuarios consultar datos, insertar, actualizar y eliminar registros, crear y modificar esquemas de bases de datos y gestionar permisos de acceso.

Pregunta 2: Enumere los elementos básicos de una consulta SQL.

Una consulta SQL suele contener una sentencia

  • SELECT una sentencia que recupera datos de una o varias tablas.
  • FROM Una cláusula: que especifica la tabla o tablas donde residen los datos.
  • Cláusula WHERE (opcional) que filtra los resultados en función de los criterios especificados.
  • Cláusula GROUP BY (opcional) que agrupa los resultados por columna(s).
  • Cláusula HAVING (opcional) que filtra los resultados agrupados.
  • Cláusula ORDER BY (opcional) que ordena los resultados en orden ascendente (o descendente).

Pregunta 3: ¿Cómo se seleccionan todos los datos de una tabla?

Para recuperar todos los datos de una tabla, utilice:

SELECT * 
FROM employees;

Esta consulta obtiene todas las filas de todas las columnas de la tabla empleados:

  • SELECT *: Selecciona todas las columnas de la tabla especificada; el asterisco (*) representa todas las columnas de una tabla.
  • FROM employees: Especifica la tabla de la que se recuperarán los datos.

Pregunta 4: ¿Cómo se seleccionan determinadas columnas de una tabla?

Para recuperar columnas específicas de una tabla, debe enumerar los nombres de las columnas deseadas en la sentencia SELECT:

SELECT first_name, last_name, department 
FROM employees;

Esta consulta recupera datos sólo de las columnas especificadas, lo que proporciona una vista centrada en la información relevante de la tabla. employees tabla.

  • SELECT first_name, last_name, department: Esta consulta sólo devuelve los datos de las columnas first_name, last_name, y department
  • FROM employees: Especifica la tabla de la que se recuperarán los datos.

También podemos nombrar las columnas seleccionadas utilizando AS:

SELECT first_name, 
last_name AS surname, 
department 
FROM employees;

En los resultados de la consulta, la columna last_name se mostrará como apellido. Puede utilizar esta opción para diferenciar dos columnas con nombres similares o para añadir más contexto a una columna. Por ejemplo, cambiar el nombre de la columna number a part_id_number permite a los lectores identificar rápidamente qué tipo de datos se almacenan en esa columna.

Pregunta 5: Explique la sintaxis de la cláusula WHERE.

La cláusula WHERE filtra las filas para que cumplan unas condiciones específicas. He aquí un ejemplo de su sintaxis:

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales';

En esta consulta, WHERE limita los resultados a los datos de los empleados del departamento de Ventas.

  • SELECT first_name, last_name: Especifica de qué columnas recuperar datos.
  • FROM employees: Especifica la tabla de la que se obtendrán los datos.
  • WHERE department = 'Sales': Limita los resultados a los empleados del departamento de Ventas.

WHERE puede aplicarse a diferentes tipos de datos. Al filtrar por números o fechas, puede utilizar comparaciones directas u operadores como <,<=,>,>= o =.

SELECT first_name, last_name
FROM employees
WHERE salary > 50000;

Al filtrar valores de NULL, se pueden utilizar los operadores IS NULL o IS NOT NULL:

SELECT * 
FROM employees 
WHERE manager_id IS NULL;

Pregunta 6: ¿Cómo se filtran los resultados de una consulta en función de varias condiciones?

Para filtrar los resultados en función de varias condiciones, se utilizan operadores lógicos como AND, OR y NOT en la cláusula WHERE.

  • El operador AND devuelve las filas que cumplen todas las condiciones especificadas.
  • El operador OR devuelve filas que cumplen al menos una de las condiciones especificadas.
  • El operador NOT devuelve las filas que no cumplen las condiciones.

Considere el siguiente ejemplo:

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales' AND salary > 50000;

Esta consulta sólo devolverá los empleados que trabajen en ventas y cuyo salario sea superior a 50.000 dólares. Si el empleado trabaja en cualquier otro departamento o trabaja en ventas y gana menos de 50.000 dólares, no aparecerá en los resultados.

  • SELECT first_name, last_name: Determina de qué columnas recuperar los datos.
  • FROM employees: Especifica la tabla de la que se obtendrán los datos.
  • WHERE department = 'Sales' AND salary > 50000: Filtra los resultados para incluir sólo a los empleados del departamento de Ventas con un salario más alto.

Puede combinar varias condiciones utilizando paréntesis:

SELECT first_name, last_name
FROM employees
WHERE (department = 'Sales' AND salary > 50000) 
  OR manager_id IS NULL;

En esta consulta, sólo se incluirán en los resultados los empleados que no reporten a un gerente (es decir, cuyo ID de gerente sea NULL) o que trabajen en ventas y ganen $50k+.

Pregunta 7: ¿Cómo se filtran los resultados para un valor de texto determinado?

Para filtrar los resultados basándose en un valor específico de una columna de texto, utilice el operador LIKE . También necesitará los símbolos de coincidencia de patrones % (coincide con cero o más caracteres) y/o _ (coincide con cualquier carácter). Considere el siguiente ejemplo:

SELECT product_name, description
FROM products
WHERE description LIKE '%apple%';

Esta consulta demuestra el uso de LIKE con la concordancia de patrones:

  • SELECT product_name, description: especifica de qué columnas recuperar datos.
  • FROM products: Especifica la tabla de la que se obtendrán los datos.
  • WHERE description IS LIKE '%apple%': Filtra los resultados para mostrar sólo los productos que tienen la palabra "apple" en su descripción.

Otro ejemplo podría ser:

SELECT * 
FROM employees 
WHERE first_name LIKE 'Mar_a';

Imagine que busca todos los empleados llamados María o Maria. Esta consulta devolverá todos los empleados cuyo nombre empiece por "Mar", seguido de cualquier carácter en lugar de "i" y, a continuación, una "a". Este patrón se puede utilizar para buscar tanto "María" como "María" en una base de datos en la que el nombre puede no llevar el acento en la "i". (También devolvería "Marta", "Marla", "Marja" y cualquier otro nombre que se ajuste al patrón).

Pregunta 8: ¿Cómo se actualizan las filas de una base de datos?

Para actualizar filas existentes en una tabla de base de datos, utilice la sentencia UPDATE:

UPDATE employees
SET salary = 60000, department = 'Marketing'
WHERE employee_id = 101;

Esta consulta muestra cómo actualizar columnas existentes con nuevos valores para filas que cumplen la condición especificada.

  • UPDATE employees: Especifica qué tabla se actualizará.
  • SET salary = 60000, department = 'Marketing': Especifica las columnas y sus nuevos valores (actualizados).
  • WHERE employee_id = 101: Define qué filas se actualizarán: en este caso, la fila en la que el ID del empleado es 101. También puede utilizar AND, OR, NOT, filtrado numérico, etc. para especificar condiciones de actualización más complejas.

Pregunta 9: ¿Cómo se eliminan filas de una base de datos?

Para eliminar filas de una tabla de base de datos, utilice la sentencia DELETE FROM, seguida del nombre de la tabla y de la condición que indica qué filas eliminar:

DELETE FROM employees
WHERE department = 'Human Resources';

Esta consulta muestra cómo eliminar filas de una tabla de base de datos en función de una condición especificada:

  • DELETE FROM employees: Indica la tabla de la que se eliminarán filas.
  • WHERE department = 'Human Resources': Especifica la condición que determina qué filas deben borrarse: en este caso, todos los empleados del departamento de Recursos Humanos. Puede especificar las condiciones de eliminación utilizando el método estándar WHERE

Pregunta 10: ¿Cómo se ordenan los resultados de una consulta SQL?

Utilice la cláusula ORDER BY, seguida del nombre o nombres de las columnas por las que desea ordenar los resultados:

SELECT product_name, price
FROM products
ORDER BY price DESC;

Esta consulta demuestra cómo ordenar los resultados basándose en una columna especificada, permitiendo que los datos se presenten en el orden deseado.

  • SELECT product_name, price: Determina de qué columnas recuperar los datos.
  • FROM products: Define la tabla donde residen estos datos.
  • ORDER BY price DESC: Ordena los resultados (de mayor a menor, también conocido como orden descendente) en price El orden por defecto de SQL es ascendente, con los valores de texto ordenados de la A a la Z y los valores numéricos ordenados de menor a mayor. Si no se especifica DESC, la ordenación se realizará en orden ascendente.

Preguntas SQL intermedias

Pregunta 11: ¿Cómo se combinan datos de varias tablas en una consulta?

Las consultas SQL utilizan las cláusulas JOIN para combinar resultados de varias tablas. JOINpermite recuperar datos de tablas relacionadas (es decir, tablas con una o más columnas en común) en función de criterios específicos. He aquí un ejemplo de JOIN:

SELECT orders.order_id, customers.customer_name
FROM orders
JOIN customers 
ON orders.customer_id = customers.customer_id;

Esta consulta recupera el ID del pedido y el nombre del cliente de las tablas orders y customers . Une la información cuando los registros de ambas tablas contienen un ID de cliente coincidente. Para obtener más información sobre el funcionamiento de JOIN, consulte Guía ilustrada del INNER JOIN de SQL. Puede encontrar más ejemplos de preguntas de entrevista de JOIN en Las 10 Mejores Preguntas de Entrevista de SQL JOIN y Cómo Responderlas.

Pregunta 12: Describa los tipos de JOIN.

Los tipos de JOIN incluyen varias variaciones, cada una sirviendo un propósito específico en la combinación de resultados de múltiples tablas:

  • INNER JOIN: Recupera sólo los registros en los que ambas tablas tienen valores coincidentes basados en la condición especificada.
  • LEFT JOIN: Devuelve todos los registros de la tabla izquierda y todos los registros coincidentes de la tabla derecha. Si no se encuentra ninguna coincidencia, se devuelven los valores de NULL para las columnas de la tabla derecha.
  • RIGHT JOINO: Devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda. Si no se encuentra ninguna coincidencia, se devuelven los valores de NULL para las columnas de la tabla izquierda.
  • FULL JOIN: Devuelve todos los registros cuando hay una coincidencia en las tablas izquierda o derecha. Si no se encuentra ninguna coincidencia, las filas no coincidentes se devuelven con NULLs.
  • CROSS JOIN: Devuelve el producto cartesiano de las dos tablas, es decir, todas las combinaciones posibles de filas.

Aunque un self-JOIN utiliza la misma sintaxis que otros JOINs, en realidad consiste en unir una tabla a sí misma. Esto permite realizar comparaciones entre filas de una misma tabla.

Pregunta 13: Describa LEFT JOIN y la diferencia entre LEFT JOIN e INNER JOIN.

LEFT JOIN es un tipo de OUTER JOIN que devuelve todas las filas de la tabla izquierda más las filas coincidentes de la tabla derecha. Si no hay ninguna coincidencia, se devuelven los valores NULL para las columnas de la tabla derecha.

La principal diferencia entre LEFT JOIN y INNER JOIN es su comportamiento con las filas no coincidentes:

  • LEFT JOIN devuelve todas las filas de la tabla izquierda, independientemente de si existe una coincidencia en la tabla derecha. Si no hay coincidencia en la tabla derecha, se asignan valores NULL a esas columnas.
  • INNER JOIN devuelve sólo las filas coincidentes de ambas tablas. Las filas no coincidentes de cualquiera de las tablas se eliminan del conjunto de resultados.

Imagine que tiene una tabla con los nombres de los alumnos y otra con sus calificaciones. Si utiliza LEFT JOIN, obtendrá una lista de todos los alumnos, incluidos los que tienen calificaciones NULL. Por el contrario, un INNER JOIN sólo mostraría los estudiantes que tienen calificaciones, excluyendo los registros con NULL calificaciones.

Pregunta 14: ¿Qué hace GROUP BY?

La cláusula GROUP BY agrupa filas con los mismos valores en filas de resumen. Suele combinarse con funciones de agregación (como SUM(), COUNT() y AVG()) para realizar cálculos sobre datos agrupados.

SELECT department, COUNT(employee_id)
FROM employees
GROUP BY department;

En este ejemplo, la consulta agrupa las filas basándose en los valores de la columna department y cuenta los valores de employee_id para cada departamento. Para ver más ejemplos de consultas similares, consulta nuestro artículo Las 9 mejores preguntas de la entrevista SQL GROUP BY.

Pregunta 15: ¿Qué son las funciones agregadas?

Las funciones agregadas de SQL calculan un conjunto de valores y devuelven un único valor. Estas funciones se utilizan con frecuencia para resumir datos y realizar cálculos en varias filas.

Las funciones agregadas SQL más comunes son:

  • SUM(): Devuelve la suma de los valores numéricos de un conjunto.
  • COUNT(): Cuenta el número de filas de un conjunto, incluyendo opcionalmente valores no nulos.
  • AVG(): Determina la media de los valores numéricos de un conjunto.
  • MIN(): Devuelve el valor mínimo del conjunto.
  • MAX(): Devuelve el valor máximo del conjunto.
SELECT 
    AVG(salary) AS avg_salary,
    COUNT(*) AS total_employees,
    MAX(age) AS max_age
FROM 
    employees;

En este ejemplo, las funciones de agregación calculan el salario medio, cuentan el número total de empleados y determinan la mayor edad entre todos los empleados de la tabla. employees tabla. Echa un vistazo a nuestra hoja de trucos de funciones agregadas de SQL para ver más ejemplos de estas funciones.

Pregunta 16: ¿Qué hace HAVING?

La cláusula HAVING filtra los resultados de la cláusula GROUP BY. Sólo se utiliza con datos agregados, lo que permite aplicar criterios de filtrado a resultados agrupados.

Imagina que tienes una tabla de pedidos y quieres encontrar el importe total de las ventas de cada cliente. Sin embargo, sólo quiere incluir a los clientes con un total de 1.000 dólares o más. Esta es la consulta que utilizaría:

SELECT customer_id, SUM(amount) AS total_sales
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;

Aquí, la cláusula HAVING filtra los grupos (clientes) basándose en la condición de que el importe total de las ventas del cliente supere los 1.000 dólares. Se aplica después de la operación GROUP BY y permite filtrar los resultados agrupados.

Pregunta 17: ¿Cuál es la diferencia entre WHERE y HAVING?

HAVING filtra grupos de filas y se aplica después de la sentencia GROUP BY. WHERE filtra filas individuales y se aplica antes de GROUP BY.

Imagine que tiene una tabla de pedidos y desea calcular el importe total de las ventas de cada producto, pero sólo de los productos cuyas ventas totales superen los 10.000 dólares. Así es como utilizaría la cláusula HAVING:

SELECT 
    product_id,
    SUM(quantity_sold * price_per_unit) AS total_sales
FROM 
    sales
GROUP BY 
    product_id
HAVING 
    SUM(quantity_sold * price_per_unit) > 10000;

Ahora considere el mismo escenario, pero esta vez sólo quiere necesitar las ventas en las que el precio unitario del producto sea superior a 10 dólares y la venta total supere los 10.000 dólares. Parte de esta información se encuentra en filas individuales, por lo que hay que filtrar las filas antes de agruparlas. También tenemos que filtrar las ventas totales, por lo que los grupos también se filtrarán.

SELECT 
    product_id,
    SUM(quantity_sold * price_per_unit) AS total_sales
FROM 
    sales
WHERE
    price_per_unit > 10
GROUP BY 
    product_id
HAVING 
    SUM(quantity_sold * price_per_unit) > 10000;

Esto demuestra cómo la cláusula WHERE filtra filas individuales basándose en condiciones, mientras que la cláusula HAVING filtra grupos de filas basándose en datos agregados. Para profundizar en este tema, consulte nuestro artículo HAVING vs. WHERE en SQL: Lo que debe saber.

Pregunta 18: Dé un ejemplo de una subconsulta SQL.

Una subconsulta SQL, también conocida como consulta anidada o consulta interna, es una consulta contenida dentro de otra consulta. Se utiliza en las sentencias SELECT, INSERT, UPDATE, y DELETE para ejecutar operaciones basadas en los resultados de otra consulta. Considere el siguiente ejemplo:

SELECT product_name
FROM products
WHERE category_id IN (SELECT category_id FROM categories WHERE category_name = 'Electronics');

En esta consulta, la cláusula WHERE utiliza una subconsulta para recuperar valores de category_id de la tabla con la cláusula . categoriescategory_name 'Electronics' La consulta externa recupera los nombres de los productos electrónicos basándose en los resultados de la subconsulta.

SQL avanzado Preguntas

Pregunta 19: ¿Cuál es la diferencia entre UNION y UNION ALL?

UNION elimina las filas duplicadas del conjunto de resultados combinados. En cambio, UNION ALL mantiene todas las filas, incluidas las duplicadas.

Imaginemos que tenemos dos tablas employees y managersque contienen la columna employee_id. Queremos combinar los ID de los empleados de las dos tablas.

SELECT employee_id FROM employees
UNION
SELECT employee_id FROM managers;

En esta consulta, si employee_id aparece tanto en employees y managersUNION eliminará el duplicado, pero UNION ALL mantendrá ambas apariciones. Puedes leer más sobre esto en UNION vs. UNION ALL en SQL: ¿Cuál es la Diferencia?

Pregunta 20: ¿Qué son las funciones ventana de SQL y para qué se usan?

Las funciones ventana de SQL realizan cálculos en un subconjunto de filas de la tabla que están relacionadas con la fila actual. Se utilizan en una ventana, que es una colección de filas relacionadas con la fila actual.

Las funciones de ventana difieren de las consultas de GROUP BY porque GROUP BY agrega datos basándose en columnas específicas, contrayendo varias filas en filas de resumen. En cambio, las funciones de ventana realizan cálculos en un conjunto de filas relacionadas con la fila actual dentro del resultado de la consulta, sin contraer el conjunto de resultados. Puede obtener más información en SQL Funciones de ventana vs. GROUP BY: ¿Cuál es la Diferencia?

Para aplicar funciones ventana, se utiliza la cláusula OVER con la siguiente sintaxis:

<function>(column) OVER (PARTITION BY partition_column ORDER BY order_column)

Donde:

  • <function> indica la función ventana que se está utilizando (por ejemplo, AVG(), SUM(), RANK()).
  • (column): La columna o expresión a la que se aplica la función ventana.
  • PARTITION BY partition_column: Una cláusula opcional que divide el conjunto de resultados en subconjuntos basados en una o más columnas. La función se aplica entonces a cada partición individualmente.
  • ORDER BY order_column: Una cláusula opcional que especifica el orden de las filas dentro de cada partición. Esto determina qué filas aparecen en el marco de la ventana para cada cálculo.

Las funciones de ventana se utilizan con frecuencia para calcular valores agregados como medias, totales y recuentos sobre un conjunto de filas. También se utilizan para comparar valores con otras filas del conjunto de resultados; esto ayuda a determinar clasificaciones, numeraciones de filas y valores máximos y mínimos dentro de una ventana. Para saber más, lea ¿Cuándo utilizar SQL Funciones de ventana?

Imaginemos que tenemos una tabla llamada employees con las columnas employee_id, department_id, y salary. Podemos calcular el salario medio por departamento utilizando la función de ventana AVG():

SELECT 
    employee_id, 
    department_id, 
    salary,
    AVG(salary) OVER (PARTITION BY department_id) AS avg_salary_per_department
FROM 
    employees;

Las funciones ventana de SQL son excelentes para calcular agregados sobre subconjuntos específicos de datos, como se muestra en este ejemplo de cálculo de salarios medios dentro de los departamentos. Son inestimables para clasificar datos, lo que puede resultar útil en tareas como la evaluación del rendimiento. Estas funciones facilitan la realización de comparaciones analíticas y la identificación de tendencias, como en el caso de los ingresos trimestrales. Veremos más ejemplos en las siguientes preguntas.

Pregunta 21: ¿Cómo se clasifican las filas en SQL?

Para clasificar filas en SQL, utilice las funciones de ventana RANK(), DENSE_RANK(), PERCENT_RANK() y ROW_NUMBER(). Estas funciones asignan un rango o número de fila a cada fila del conjunto de resultados basándose en criterios predefinidos:

  • RANK(): Asigna un rango único a cada fila distinta. Las filas con el mismo valor reciben el mismo rango, pero hay huecos en la clasificación (por ejemplo, 1,2,3,3,5).
  • DENSE_RANK(): También asigna un rango único a cada fila y da el mismo rango a las filas empatadas, pero elimina los huecos en la secuencia de clasificación. En su lugar, asigna el siguiente rango consecutivo a la fila siguiente a las filas empatadas (por ejemplo, 1,2,3,3,4).
  • PERCENT_RANK() devuelve la clasificación de cada fila de la partición/conjunto de resultados en forma de percentil (de 0 a 1).
  • ROW_NUMBER() asigna un número de fila único a cada fila del conjunto de resultados, sin tener en cuenta los valores duplicados o empatados.

Lea nuestra Visión general de las funciones de clasificación en SQL para conocer más diferencias entre estas funciones.

Imaginemos que tenemos una tabla llamada employees con las columnas employee_id, employee_name, y salary. Podemos clasificar a los empleados basándonos en su salario en orden descendente utilizando la función de ventana RANK():

SELECT 
    employee_id, 
    employee_name, 
    salary,
    RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM 
    employees;

Esta consulta devuelve los ID, nombres y salarios de los empleados de la tabla employees tabla. A continuación, clasifica a cada empleado en función de su salario, y los salarios más altos reciben clasificaciones más bajas. El resultado incluye las columnas originales así como una nueva columna, salary_rank, que indica el rango salarial de cada empleado.

Pregunta 22: ¿Qué es un CTE? ¿Cuándo se utiliza?

Una CTE, o expresión común de tabla, es un conjunto de resultados temporal con nombre que se puede utilizar en una sentencia SELECT, INSERT, UPDATE, o DELETE. Permite dividir consultas complejas en partes manejables y reutilizables.

Una CTE, introducida con la palabra clave WITH, permite crear una estructura temporal similar a una tabla que sólo existe durante la ejecución de la consulta. A continuación, se puede hacer referencia a la tabla temporal en la misma consulta. Las CTE son especialmente útiles para dividir cálculos complejos en varios pasos, lo que mejora la organización del código y permite su reutilización.

Supongamos que tenemos una tabla llamada employees con las columnas employee_id, employee_name, y salary. Podemos crear un CTE para seleccionar los empleados mejor pagados que ganan más de 100.000 dólares:

WITH high_paid_employees AS (
  SELECT 
      employee_id, 
      employee_name, 
      salary
  FROM 
      employees
  WHERE 
      salary > 100000
)
SELECT 
    * 
FROM 
    high_paid_employees;

Pregunta 23: ¿Qué es un total acumulado y cómo se calcula en SQL?

Un total acumulado, también conocido como suma acumulada, es la suma de un valor sobre un conjunto de filas en un orden determinado. En SQL, un total acumulado puede calcularse utilizando SUM() y la cláusula OVER().

La siguiente consulta calcula el total acumulado de order_amount sobre todas las filas de la tabla orders tabla ordenadas por order_date:

SELECT 
    order_date, 
    order_amount,
    SUM(order_amount) OVER (ORDER BY order_date) AS running_total
FROM 
    orders;

Pregunta 24: ¿Qué es una media móvil y cómo se calcula en SQL?

Una media móvil representa la media de un conjunto de valores sobre un conjunto de tiempos, donde la ventana"se mueve" a lo largo del conjunto de datos. En SQL, puede calcular una media móvil utilizando AVG() con OVER() y especificando un marco de ventana.

La siguiente consulta calcula la media móvil del valor de la fila actual y las dos filas anteriores, ordenadas por fecha.

SELECT 
    date, 
    value,
    AVG(value) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_average
FROM 
    dataset;

Pregunta 25: ¿Cómo se calcula la diferencia interanual en SQL?

Para calcular la diferencia interanual en SQL, utilice funciones como LAG() para comparar valores entre filas consecutivas.

La siguiente consulta calcula la diferencia interanual en los ingresos restando los ingresos del año en curso de los ingresos del año anterior:

SELECT 
    year, 
    revenue,
    revenue - LAG(revenue, 1) OVER (ORDER BY year) AS year_to_year_difference
FROM 
    yearly_revenue;

Más ayuda con las preguntas de la entrevista SQL para analistas de datos

El dominio de SQL es esencial para tener éxito como analista de datos. Permite una interacción eficaz con las bases de datos relacionales, simplificando la recuperación de datos, la manipulación y los cálculos estadísticos. Si perfeccionas tus conocimientos de SQL, podrás enfrentarte con confianza a las entrevistas para analistas de datos.

Recuerde: la práctica hace al maestro. Considere la posibilidad de inscribirse en uno de nuestros cursos interactivos como SQL para el análisis de datos. También puede encontrar muchos más ejemplos de preguntas para entrevistas en nuestro blog, como el artículo Las 27 mejores preguntas de entrevista de SQL avanzado con respuestas. Estarás preparado para superar la entrevista en un abrir y cerrar de ojos.