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

Las 9 mejores preguntas de la entrevista SQL GROUP BY

¿Preparándote para una entrevista de trabajo de SQL? Esta guía te guiará a través de nueve preguntas básicas, intermedias y avanzadas de GROUP BY que podrías tener que responder.

Hay preguntas comunes de GROUP BY que aparecen en muchas entrevistas de trabajo de SQL; en este artículo, te explicaremos cómo responderlas. Si eres un analista de datos u otro profesional de los datos que se prepara para una entrevista, este artículo pretende ayudarte. Por supuesto, cualquier persona interesada en SQL y la cláusula GROUP BY también puede leer estas preguntas. Probablemente aprenderás algo nuevo e interesante sobre esta popular cláusula.

Este artículo está dividido en dos secciones: preguntas básicas y preguntas intermedias/avanzadas. Este enfoque gradual también refleja nuestros cursos que cubren la cláusula GROUP BY, incluido nuestro cursoSQL para principiantes . En 129 ejercicios interactivos, se introducen importantes temas básicos de SQL, como GROUP BY, JOINs, WHERE, y operaciones de conjuntos (UNION, INTERSECT, EXCEPT).

Los matices intermedios y avanzados de GROUP BY se tratan en nuestro curso Cómo crear informes básicos con SQL. Aquí aprenderá a agregar datos, a utilizar la sentencia CASE WHEN, a crear métricas, ratios y comparaciones de datos más complejas y a trabajar con expresiones de tabla comunes (CTE). Si desea obtener más información, consulte este artículo sobre el curso Cómo crear informes básicos con SQL .

Comencemos esta visión general con algunas preguntas básicas de entrevista.

Preguntas Básicas de la Entrevista GROUP BY

1: ¿Qué significa GROUP BY GROUP BY?

La cláusula GROUP BY en SQL ordena los resultados de la consulta en grupos, con todas las filas con el mismo valor en una columna determinada pertenecientes a un grupo. Por ejemplo, si tiene una tabla que almacena datos de empleados, puede contar los empleados por departamento o encontrar el salario medio de cada departamento. GROUP BY suele utilizarse con las funciones de agregación como COUNT(), SUM(), AVG(), MIN(), MAX().

Puede encontrar una descripción más detallada de GROUP BY en nuestro artículo ¿Cómo funciona SQL GROUP BY?

2: Utilice la tabla movie_streaming para escribir tres consultas.

Es típico que el entrevistador pida al candidato que escriba una consulta utilizando la cláusula GROUP BY. Demostraremos tres ejemplos que muestran temas comunes de GROUP BY.

La tabla movie_streaming contiene estadísticas sobre cuántas veces se ha reproducido una película cada día.

iddatemoviedirectornumber_of_streams
12022-04-01FargoCoen brothers495
22022-04-01The Big LebowskiCoen brothers512
32022-04-01No Country for Old MenCoen brothers270
42022-04-01DogtoothYorgos Lanthimos157
52022-04-01The LobsterYorgos Lanthimos247
62022-04-01The Killing of a Sacred DeerYorgos Lanthimos320
72022-04-02FargoCoen brothers321
82022-04-02The Big LebowskiCoen brothers905
92022-04-02No Country for Old MenCoen brothers308
102022-04-02DogtoothYorgos Lanthimos233
112022-04-02The LobsterYorgos Lanthimos405
122022-04-02The Killing of a Sacred DeerYorgos Lanthimos109

2a: Encontrar el número total de streams por fecha.

Esta pregunta le pide que agrupe los datos por una sola columna:

SELECT date,
	 SUM(number_of_streams) AS total_number_of_streams
FROM movie_streaming
GROUP BY date;

El código de salida será:

datetotal_number_of_streams
2022-04-012,001
2022-04-022,281

La agrupación se realiza sobre la columna fecha, y se utiliza la función agregada SUM() para obtener el número de flujos por fecha.

2b: Hallar el número total de flujos por date y director.

Para obtener una respuesta a esta pregunta, es necesario agrupar los datos por dos columnas. Para ello, las columnas fecha y director deben indicarse en GROUP BY y separarse con una coma.

SELECT date,
	 director,
	 SUM(number_of_streams) AS total_number_of_streams
FROM movie_streaming
GROUP BY date, director;

Esto es lo que devolverá el código:

datedirectortotal_number_of_streams
2022-04-01Yorgos Lanthimos724
2022-04-02Coen brothers1,534
2022-04-02Yorgos Lanthimos747
2022-04-01Coen brothers1,277

2c: Encontrar el número total de flujos por fecha y director. Mostrar sólo las fechas con un número total de flujos superior a 740.

SELECT date,
	 director,
	 SUM(number_of_streams) AS total_number_of_streams
FROM movie_streaming
GROUP BY date, director
HAVING SUM(number_of_streams) > 740;

Los datos se agrupan de nuevo por las columnas date y director. La cláusula HAVING y la función SUM() se utilizan para mostrar sólo los flujos totales superiores a 740. (SUM() suma el número de flujos diarios; HAVING filtra los flujos que no alcanzan la cantidad mínima).

Al ejecutar la consulta se obtendrá:

datedirectortotal_number_of_streams
2022-04-02Coen brothers1,534
2022-04-02Yorgos Lanthimos747
2022-04-01Coen brothers1,277

Puedes encontrar más detalles sobre estos conceptos en este artículo que explica cómo funciona GROUP BY.

3: ¿Cómo se filtran los grupos en una consulta SQL?

Los grupos en una consulta SQL se filtran utilizando la cláusula HAVING. HAVING no puede utilizarse sin GROUP BY; siempre se escribe después de GROUP BY, y su finalidad es filtrar los datos resultantes de una función de agregación - por ejemplo, encontrar grupos cuyo recuento sea superior a un número especificado, etc.

Es importante señalar que la cláusula WHERE también se utiliza para filtrar en una consulta SQL. Mientras que HAVING se utiliza para filtrar grupos, WHERE filtra filas. En otras palabras, WHERE filtra los datos antes de agregarlos.

4: ¿Cuál es la diferencia entre WHERE y HAVING en SQL?

Tanto WHERE como HAVING se utilizan para filtrar datos en una consulta SQL. La principal diferencia es que WHERE se utiliza en valores no agregados, mientras que HAVING se utiliza en los agregados. El orden de ejecución es el siguiente: WHERE - GROUP BY - HAVING. Esto también significa que WHERE se escribe antes que GROUP BY, mientras que HAVING viene después de GROUP BY.

En la práctica, WHERE filtra primero los datos. Estos datos filtrados se agruparán y agregarán y, a continuación, HAVING filtrará los datos agrupados y agregados.

Por ejemplo, podría utilizar WHERE para filtrar sólo los usuarios que han estado empleados durante más de un año. A continuación, puede calcular el salario medio de los empleados con más de un año de experiencia por departamento. Por último, puede mostrar sólo los departamentos con un salario medio superior a un valor específico utilizando la cláusula HAVING. De esta forma, filtras las filas antes y después de la función de agregado. Consulta este artículo para obtener una explicación detallada de las diferencias entre WHERE y HAVING .

Preguntas intermedias y avanzadas de la entrevista GROUP BY

5: ¿Qué funciones se pueden utilizar con GROUP BY?

La cláusula GROUP BY se utiliza normalmente con las funciones agregadas de SQL. Éstas toman valores de filas individuales, realizan un cálculo y devuelven un único valor. Algunas de las funciones agregadas más utilizadas son:

  • SUM() - Suma todos los valores de las filas.
  • COUNT() - Cuenta el número de filas.
  • AVG() - Devuelve el valor medio.
  • MIN() - Devuelve el valor más pequeño.
  • MAX() - Devuelve el valor mayor.

6: ¿Cuál es la diferencia entre COUNT(*), COUNT(expression), y COUNT(DISTINCT expression)?

COUNT(*) devuelve el número de filas, incluyendo las filas duplicadas y las filas con valores NULL.

Esto es diferente de COUNT(expression), que devuelve sólo el número de filas con valores noNULL. También cuenta las filas con valores duplicados.

Si añade la palabra clave DISTINCT, las filas duplicadas se ignorarán, al igual que las filas con valores NULL. De esta forma, obtendrá el número de filas únicas o distintas.

Este artículo sobre los tres usos de la función COUNT( ) explica las diferencias con más detalle.

7: ¿Qué ocurre con NULL cuando se utiliza GROUP BY?

La cláusula GROUP BY no ignora los valores de NULL. Por lo tanto, si la utiliza y hay valores NULL en la columna, todas las filas con valores NULL de la columna se tratarán como un solo grupo.

¿Cómo funciona esto en la práctica? Aquí tienes una explicación más detallada de GROUP BY y NULLs, junto con ejemplos prácticos.

8: ¿Qué devolverá este código?

SELECT department,
       month,
 AVG(salary) AS average_salary
FROM salaries
GROUP BY department;

Este código arrojará un error porque la columna mes no está escrita en la sentencia GROUP BY. El error se produce porque todas las columnas que aparecen en la sentencia SELECT deben aparecer en la sentencia GROUP BY. Hay que corregir este error de "expresión no GROUP BY".

Para que el código funcione, debería escribirse así:

SELECT department,
       month,
 	 AVG(salary) AS average_salary
FROM salaries
GROUP BY department, month;

Esta consulta mostrará el salario medio por mes y por departamento.

Sin embargo, no es necesario que todas las columnas que aparecen en la cláusula GROUP BY aparezcan en la sentencia SELECT. Por lo tanto, el código anterior podría tener este aspecto y aún así no devolver un error:

SELECT department,
 	 AVG(salary) AS average_salary
FROM salaries
GROUP BY department, month;

Aunque este código funcionará y devolverá los valores medios correctos, al no mostrar la información del mes será imposible descifrar qué salario medio corresponde a cada mes.

9: ¿Qué es GROUP BY extensiones? Qué es GROUP BY ¿conoces?

GROUP BY Las extensiones aumentan las posibilidades de la cláusula GROUP BY, permitiendo la creación de informes más complejos mediante una agrupación de datos más sofisticada.

Estas extensiones son ROLLUP, CUBE, y GROUPING SETS. La extensión ROLLUP se utiliza sobre todo para calcular subtotales en datos jerárquicos. Asumirá la relación jerárquica entre los datos, creando subtotales para cada nivel y el total general.

La extensión CUBE es similar, pero crea todas las combinaciones de datos posibles y devuelve sus subtotales y un total general.

La tercera extensión es GROUPING SETS. Permite escribir las múltiples cláusulas GROUP BY en una sola cláusula GROUP BY. Esto proviene de la definición de un conjunto de agrupación, que es un grupo de columnas por las que se quieren agrupar los datos.

Para ver cómo funcionan estas extensiones en la práctica, deberías ver lo que ofrece el curso Extensiones GROUP BY.

Prepárate para tu entrevista de trabajo SQL

Este ha sido un resumen de las preguntas más comunes en entrevistas SQL enfocadas en la cláusula GROUP BY.

GROUP BY es un concepto importante. Sin usarlo como si fuera tu segunda naturaleza, no podrás impresionar en la entrevista de trabajo. Este artículo te ha dado una buena idea de lo que puedes esperar..

Pero no basta con conocer los conceptos. También necesitas práctica, y la práctica significa escribir un montón de código utilizando el GROUP BY. Our SQL para principiantes y Cómo crear informes básicos con SQL te darán una oportunidad estructurada de hacer exactamente eso.