Un componente importante para el analista para resumir los datos como las ventas, el beneficio, el coste y el salario. El resumen de datos es muy útil para el analista para crear una visualización, concluir los resultados, y la escritura de informes. En SQL, la cláusula GROUP BY es una de las herramientas para resumir o agregar las series de datos. Por ejemplo, sumar las ventas diarias y combinarlas en un solo trimestre y mostrarlo a la alta dirección. Del mismo modo, si quieres contar cuántos empleados hay en cada departamento de la empresa. Agrupa las bases de datos en base a una o más columnas y agrega los resultados.
Después de agrupar los datos, puedes filtrar el registro agrupado utilizando la cláusula HAVING. La cláusula HAVING devuelve los registros agrupados que coinciden con la condición dada. También puede ordenar los registros agrupados utilizando ORDER BY. ORDER BY se utiliza después de GROUP BY en la columna agregada.
En este tutorial, usted va a aprender GROUP BY Clause en detalle con ejemplos relevantes. Aquí está la lista de temas que aprenderá en este tutorial:
- Clausula Group By
- Clausula Having
- Funciones de agregación
- Comparar la Cláusula Having y Where en SQL
- Grupo por con ejemplo de JOIN
- Comparación de Group By con otra Cláusula
- Manos.on Practice Assignment
- Conclusión
Clausa Group By
La Cláusula GROUP BY se utiliza en SQL con la sentencia SELECT para organizar datos similares en grupos. Combina los múltiples registros en una o más columnas utilizando algunas funciones. Generalmente, estas funciones son funciones agregadas como min(),max(),avg(), count(), y sum() para combinar en una o varias columnas. Utiliza la estrategia dividir-aplicar-combinar para el análisis de datos.
- En el
split phase
, Divide los grupos con sus valores. - En el
apply phase
, Aplica la función de agregado y genera un único valor. - En el
combiner phase
, Combina los grupos con valores individuales en un único valor.
Fuente de la imagen
Puntos a recordar:
- La cláusula GROUP BY se utiliza con la sentencia SELECT.
- GROUP BY agrega los resultados en base a la columna seleccionada: COUNT, MAX, MIN, SUM, AVG, etc.
- GROUP BY devuelve sólo un resultado por grupo de datos.
- La cláusula GROUP BY siempre sigue a la cláusula WHERE.
- La cláusula GROUP BY siempre precede a la cláusula ORDER BY(http://slideplayer.com/slide/15440670/).
En el ejemplo anterior, la tabla se agrupa en base a la columna DeptID y el salario se agrega por departamentos.
Clausura de posesión
La cláusula de posesión se utiliza en SQL como una cláusula condicional con la cláusula GROUP BY. Esta cláusula condicional devuelve las filas donde los resultados de la función agregada coinciden con las condiciones dadas solamente. Se agregó en el SQL porque la Cláusula WHERE no puede ser combinada con resultados agregados, por lo que tiene un propósito diferente. El propósito principal de la Cláusula WHERE es tratar con registros no agregados o individuales.
- La Cláusula HAVING siempre se utiliza en combinación con la Cláusula GROUP BY.
- La Cláusula HAVING restringe los datos en los registros del grupo en lugar de los registros individuales.
- WHERE y HAVING se pueden utilizar en una sola consulta.
En el ejemplo anterior, la tabla se agrupa en base a la columna DeptID y estas filas agrupadas se filtran utilizando la cláusula HAVING con la condición AVG(Salary) > 3000.
Funciones de agregación
Las funciones de agregación se utilizan para combinar el resultado de un grupo en uno solo, como COUNT, MAX, MIN, AVG, SUM, STDDEV y VARIANCE. Estas funciones también se conocen como funciones de filas múltiples.
-
SUM()
: Devuelve la suma o el total de cada grupo. -
COUNT()
: Devuelve el número de filas de cada grupo. -
AVG()
: Devuelve la media y el promedio de cada grupo. -
MIN()
: Devuelve el valor mínimo de cada grupo. -
MAX()
: Devuelve el valor mínimo de cada grupo.
Compare Having y Where Clause en SQL
- En algunos casos, necesita filtrar los registros individuales. En tales casos, puede utilizar la cláusula WHERE, Mientras que en otros casos necesita filtrar los grupos con la condición específica. En estos casos, puede utilizar la cláusula HAVING.
- La cláusula WHERE filtra los registros tupla por tupla mientras que la cláusula HAVING filtra todo el grupo.
- Una consulta puede tener ambas cláusulas (WHERE y HAVING).
- La cláusula WHERE se aplica primero y luego la cláusula Having.
- La Cláusula WHERE restringe los registros antes de la Cláusula GROUP BY, mientras que la Cláusula HAVING restringe los grupos después de que se realice la Cláusula GROUP BY.
- La Cláusula WHERE se puede utilizar con SELECT, UPDATE, DELETE e INSERT, mientras que HAVING sólo se puede utilizar con la sentencia SELECT.
Image Source
GROUP BY With JOIN Example
La base de datos relacional normalizada descompone la tabla compleja en pequeñas tablas, lo que le ayuda a eliminar la redundancia de datos, la inconsistencia y asegurar que no hay pérdida de información. Las tablas normalizadas requieren la unión de datos de múltiples tablas.
En el ejemplo anterior, Empleado y Departamento se unen utilizando la columna común DeptID.
En el ejemplo anterior, las cláusulas JOIN y GROUP BY se utilizan juntas en una sola consulta. Después de unir ambas tablas (Empleado y Departamento), la tabla unida se agrupa por el nombre del Departamento.
Comparación de GROUP BY con otra cláusula
Comparar GROUP BY y DISTINCT
DISTINCT devuelve los valores únicos presentes en la columna mientras que GROUP BY devuelve elementos únicos/distintos con la columna resultante agregada. En el siguiente ejemplo puedes ver los valores DISTINCT en la tabla dept
.
Comparar GROUP BY y ORDER BY
ORDER BY devuelve los elementos clasificados en orden ascendente y descendente mientras que GROUP BY devuelve los elementos únicos con la columna resultante agregada. En el siguiente ejemplo se puede ver la tabla ORDER BY o salario ordenado.
Tarea práctica
Nombre de la tabla: Libros
Columnas: ISBN, Título, Fecha de Publicación, Precio, Editorial
Escriba las consultas SQL para las siguientes sentencias y comparta sus respuestas en los comentarios:
- Determine cuántos libros hay en cada categoría.
- Determine cuántos libros hay en la categoría Gestión.
- Determine el precio medio de los libros de cada categoría.
- Liste el precio del libro menos caro de cada categoría.
Fuente: Esta tarea está inspirada en el libro «Oracle 11g SQL» de John Casteel.
Conclusión
¡Felicidades, has llegado al final de este tutorial!
En este tutorial, has cubierto muchos detalles sobre la cláusula GROUP BY y HAVING. Ha aprendido lo que son las cláusulas GROUP BY y HAVING con ejemplos, la comparación entre las cláusulas HAVING y WHERE en SQL, GROUP BY con JOIN, y la comparación de GROUP BY con DISTINCT y ORDER BY. En la última sección, tiene una asignación de práctica para evaluar su conocimiento.
Esperamos que ahora pueda utilizar el concepto de GROUP BY y HAVING Clause para analizar sus propios conjuntos de datos. Gracias por leer este tutorial.
Si está interesado en aprender más sobre SQL, tome el curso de SQL intermedio de DataCamp.