Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Cláusula Having | Agrupación
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
SQL Intermedio

bookCláusula Having

Se está revisando el sistema de información escolar para garantizar la coherencia y precisión de los datos. Como parte de esta revisión, se ha asignado una nueva tarea de análisis de datos.

Durante las comprobaciones rutinarias, se descubrió que algunos registros de estudiantes contienen más de una entrada de calificación, aunque el sistema está diseñado para almacenar solo una calificación por estudiante.

Su tarea es ayudar a identificar estos casos para una revisión interna adicional.

Reflexionemos juntos sobre cómo podemos hacer esto. Podría empezar considerando que esto se puede lograr utilizando una cláusula WHERE, y se vería algo así:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
copy

Pero, como puedes ver, obtenemos un error que indica que no podemos utilizar funciones de agregación dentro de una cláusula WHERE. Aquí es donde necesitaremos la cláusula HAVING.

Supongamos que necesitamos obtener los departamentos donde el salario promedio de los empleados es inferior a $70,000 por año. Para lograr esto, necesitaremos utilizar una función de agregación y la cláusula HAVING:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
copy

Recibimos un departamento en la respuesta utilizando la cláusula HAVING, donde establecemos una condición para la columna por la que agrupamos los datos.

Note
Nota

Para utilizar la agregación de datos dentro de la cláusula HAVING, es necesario que exista agrupación de datos en la consulta. Como en la consulta anterior, agrupamos los datos por la columna department.

Veamos la sintaxis más generalizada de la cláusula HAVING y cuándo es más adecuado utilizarla:

SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

Comprendamos también brevemente la diferencia principal entre las cláusulas WHERE y HAVING, y cuándo utilizar cada una:

  1. La cláusula WHERE se utiliza antes de la agregación de datos, mientras que la cláusula HAVING se utiliza después de la agregación de datos;
  2. La cláusula WHERE se escribe antes de GROUP BY, mientras que la cláusula HAVING se escribe después de GROUP BY.

Estas son las dos diferencias principales que debes recordar para un uso exitoso de la cláusula HAVING. Ahora, volvamos a la tarea que nos ha dado la escuela.

Tarea

Swipe to start coding

Algunos estudiantes aparecen varias veces en los registros de calificaciones, lo que indica entradas duplicadas o inesperadas en el sistema.

Es necesario obtener los apellidos de todos los estudiantes cuyos registros contienen más de una entrada de calificación. El resultado será utilizado por la administración escolar para revisar y corregir los datos si es necesario.

Devuelve únicamente la lista de apellidos que cumplen con esta condición, ordenados alfabéticamente.

Instrucciones breves

  • Recuperar la columna student_surname.
  • Agrupar los datos por student_surname.
  • Utilizar la cláusula HAVING para filtrar los resultados según COUNT(grade) > 1.
  • Ordenar los resultados por student_surname.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 6
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you show me how to use the HAVING clause to find students with multiple grade entries?

Can you explain why the HAVING clause works in this scenario but WHERE does not?

Can you provide an example query for the school task using HAVING?

close

bookCláusula Having

Desliza para mostrar el menú

Se está revisando el sistema de información escolar para garantizar la coherencia y precisión de los datos. Como parte de esta revisión, se ha asignado una nueva tarea de análisis de datos.

Durante las comprobaciones rutinarias, se descubrió que algunos registros de estudiantes contienen más de una entrada de calificación, aunque el sistema está diseñado para almacenar solo una calificación por estudiante.

Su tarea es ayudar a identificar estos casos para una revisión interna adicional.

Reflexionemos juntos sobre cómo podemos hacer esto. Podría empezar considerando que esto se puede lograr utilizando una cláusula WHERE, y se vería algo así:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
copy

Pero, como puedes ver, obtenemos un error que indica que no podemos utilizar funciones de agregación dentro de una cláusula WHERE. Aquí es donde necesitaremos la cláusula HAVING.

Supongamos que necesitamos obtener los departamentos donde el salario promedio de los empleados es inferior a $70,000 por año. Para lograr esto, necesitaremos utilizar una función de agregación y la cláusula HAVING:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
copy

Recibimos un departamento en la respuesta utilizando la cláusula HAVING, donde establecemos una condición para la columna por la que agrupamos los datos.

Note
Nota

Para utilizar la agregación de datos dentro de la cláusula HAVING, es necesario que exista agrupación de datos en la consulta. Como en la consulta anterior, agrupamos los datos por la columna department.

Veamos la sintaxis más generalizada de la cláusula HAVING y cuándo es más adecuado utilizarla:

SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

Comprendamos también brevemente la diferencia principal entre las cláusulas WHERE y HAVING, y cuándo utilizar cada una:

  1. La cláusula WHERE se utiliza antes de la agregación de datos, mientras que la cláusula HAVING se utiliza después de la agregación de datos;
  2. La cláusula WHERE se escribe antes de GROUP BY, mientras que la cláusula HAVING se escribe después de GROUP BY.

Estas son las dos diferencias principales que debes recordar para un uso exitoso de la cláusula HAVING. Ahora, volvamos a la tarea que nos ha dado la escuela.

Tarea

Swipe to start coding

Algunos estudiantes aparecen varias veces en los registros de calificaciones, lo que indica entradas duplicadas o inesperadas en el sistema.

Es necesario obtener los apellidos de todos los estudiantes cuyos registros contienen más de una entrada de calificación. El resultado será utilizado por la administración escolar para revisar y corregir los datos si es necesario.

Devuelve únicamente la lista de apellidos que cumplen con esta condición, ordenados alfabéticamente.

Instrucciones breves

  • Recuperar la columna student_surname.
  • Agrupar los datos por student_surname.
  • Utilizar la cláusula HAVING para filtrar los resultados según COUNT(grade) > 1.
  • Ordenar los resultados por student_surname.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 6
single

single

some-alt