Cláusula Having
La escuela está muy agradecida por tu trabajo, y ahora tenemos una nueva tarea.
Resulta que algunos estudiantes tomaron exámenes adicionales cuando se suponía que debían tomar solo uno. La escuela los sospecha de hacer trampa porque cada estudiante debería tener solo una calificación.
Se nos ha encargado obtener los apellidos de estos estudiantes y entregárselos a la administración escolar para que tomen las medidas que consideren necesarias.
Pensemos juntos cómo podemos hacer esto. Podrías empezar considerando que podemos hacerlo usando una cláusula WHERE
, y se vería algo así:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Pero, como puedes ver, obtenemos un error que indica que no podemos usar 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 usar una función de agregación y la cláusula HAVING
:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Recibimos un departamento como resultado utilizando la cláusula HAVING
, donde establecemos una condición para la columna por la que agrupamos los datos.
Nota
Para utilizar la agregación de datos dentro de la cláusula
HAVING
, es necesario que exista agrupación de datos en nuestra consulta. Como en la consulta anterior, agrupamos los datos por la columnadepartment
.
Veamos la sintaxis más generalizada de la cláusula HAVING
y cuándo es mejor 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 de ellas:
- La cláusula
WHERE
se utiliza antes de la agregación de datos, mientras que la cláusulaHAVING
se utiliza después de la agregación de datos; - La cláusula
WHERE
se escribe antes deGROUP BY
, mientras que la cláusulaHAVING
se escribe después deGROUP BY
.
Estas son las dos diferencias principales que debes recordar para utilizar correctamente la cláusula HAVING
. Ahora, volvamos a la tarea que nos asignó la escuela.
Swipe to start coding
Tu tarea será obtener los apellidos de los estudiantes que tienen múltiples calificaciones en la escuela.
Solo necesitas recuperar los apellidos de los estudiantes; no es necesario incluir la cantidad de sus calificaciones en la respuesta. Utiliza la cláusula HAVING
y la función agregada COUNT()
para realizar esta tarea. Luego, ordena los apellidos en orden alfabético.
Nota:
El resultado debe contener solo una columna con los apellidos.
Instrucciones breves
- Recuperar la columna
student_surname
. - Agrupar los datos por
student_surname
. - Utilizar la cláusula
HAVING
para filtrar los resultados segúnCOUNT(grade) > 1
. - Ordenar los resultados por
student_surname
.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 4
Cláusula Having
Desliza para mostrar el menú
La escuela está muy agradecida por tu trabajo, y ahora tenemos una nueva tarea.
Resulta que algunos estudiantes tomaron exámenes adicionales cuando se suponía que debían tomar solo uno. La escuela los sospecha de hacer trampa porque cada estudiante debería tener solo una calificación.
Se nos ha encargado obtener los apellidos de estos estudiantes y entregárselos a la administración escolar para que tomen las medidas que consideren necesarias.
Pensemos juntos cómo podemos hacer esto. Podrías empezar considerando que podemos hacerlo usando una cláusula WHERE
, y se vería algo así:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Pero, como puedes ver, obtenemos un error que indica que no podemos usar 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 usar una función de agregación y la cláusula HAVING
:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Recibimos un departamento como resultado utilizando la cláusula HAVING
, donde establecemos una condición para la columna por la que agrupamos los datos.
Nota
Para utilizar la agregación de datos dentro de la cláusula
HAVING
, es necesario que exista agrupación de datos en nuestra consulta. Como en la consulta anterior, agrupamos los datos por la columnadepartment
.
Veamos la sintaxis más generalizada de la cláusula HAVING
y cuándo es mejor 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 de ellas:
- La cláusula
WHERE
se utiliza antes de la agregación de datos, mientras que la cláusulaHAVING
se utiliza después de la agregación de datos; - La cláusula
WHERE
se escribe antes deGROUP BY
, mientras que la cláusulaHAVING
se escribe después deGROUP BY
.
Estas son las dos diferencias principales que debes recordar para utilizar correctamente la cláusula HAVING
. Ahora, volvamos a la tarea que nos asignó la escuela.
Swipe to start coding
Tu tarea será obtener los apellidos de los estudiantes que tienen múltiples calificaciones en la escuela.
Solo necesitas recuperar los apellidos de los estudiantes; no es necesario incluir la cantidad de sus calificaciones en la respuesta. Utiliza la cláusula HAVING
y la función agregada COUNT()
para realizar esta tarea. Luego, ordena los apellidos en orden alfabético.
Nota:
El resultado debe contener solo una columna con los apellidos.
Instrucciones breves
- Recuperar la columna
student_surname
. - Agrupar los datos por
student_surname
. - Utilizar la cláusula
HAVING
para filtrar los resultados segúnCOUNT(grade) > 1
. - Ordenar los resultados por
student_surname
.
Solución
¡Gracias por tus comentarios!
Awesome!
Completion rate improved to 4single