Introducción a la cláusula GROUP BY en SQL

Para los casos en los que necesitamos agrupar las filas con el mismo valor, la cláusula Group By aparece en la imagen. La cláusula GROUP BY es un comando en SQL que realizará esta operación.

El punto importante a recordar aquí es que la cláusula GROUP BY se usa en la instrucción SELECT en la consulta después de usar la cláusula WHERE.

Sintaxis

La sintaxis para la cláusula Group By es:

SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;

Explicación de la sintaxis

  1. Instrucción SELECT - consulta de comando SQL
  2. nombre_tabla: el nombre de la tabla de la base de datos a la que se hace referencia
  3. condiciones: consulte las condiciones a comprobar
  4. GROUP BY - cláusula para agrupar las mismas filas juntas
  5. ORDER BY: siempre se usa después de la cláusula Group By para organizar las filas en orden ascendente o descendente. Esta es una condición opcional.

¿Cómo funciona la cláusula GROUP BY en SQL?

Para entender el funcionamiento de la cláusula Group By, tomemos la ayuda de un ejemplo. Considere una tabla con nombre como EMPLEADO que contiene los detalles básicos del empleado, como nombre, edad, número de teléfono, fecha de nacimiento, sexo, dirección, identificación de correo electrónico, etc.

Mesa de empleados

nombreañosteléfonogénerocorreo electrónico
John23123Masculino
Mayo22456Hembra
Ana45644Hembra
Ollas573456Hembra
Res45456Hembra
Bronceado782456Masculino
Corrió345899Masculino
Pálido557789Hembra
Tung325689Masculino
Chung214678Masculino

Tenga en cuenta que el EMPLEADO tiene alrededor de 10 entradas.

Primero obtengamos los diferentes valores de "género" de esta tabla. La consulta que nos ayudará a alcanzar nuestro objetivo sería:

SELECT gender FROM EMPLOYEE;

Esto nos dará los siguientes valores:

género
Masculino
Hembra
Hembra
Hembra
Hembra
Masculino
Masculino
Hembra
Masculino
Masculino

El problema aquí es la redundancia de los valores, es decir, como podemos ver, solo hay dos valores únicos de género en la tabla, pero la salida no solo nos da los valores únicos, sino todos los valores, incluso si son repetitivos.

Entonces, para obtener solo los valores únicos de la tabla, utilizaremos la siguiente consulta:

SELECT gender FROM EMPLOYEE GROUP BY gender;

El resultado que recibamos después de ejecutar esta consulta será:

género
Masculino
Hembra

Agrupar por agrupará todos los mismos valores en las filas y devolverá una sola entrada o una sola fila para ellos, como lo hizo con las filas "Hombre" y "Mujer" en la tabla. Esto dio como resultado solo dos valores únicos que estaban presentes en la columna "género" i, e. Femenino y masculino.

Ahora, tomemos otro ejemplo de una tabla que contiene los detalles del departamento al que está asociado cada uno de estos empleados. Llamaremos a esto una tabla Employee_Department.

Mesa del departamento de empleados

nombrecapachoDepartamento
Johnhod1Servicio
Mayohod2Finanzas
Anahod1Servicio
Ollashod2Finanzas
Reshod3Tecnología
Bronceadohod5Apoyo
Corrióhod3Servicio
Pálidohod3Tecnología
Tunghod3Finanzas
Chunghod5HORA

Así que ahora ejecutemos la consulta a continuación y busquemos el resultado:

SELECT hod, department FROM Employee_Department GROUP BY hod, department;

La ejecución de esta consulta obtiene el siguiente resultado:

capachoDepartamento
hod1Servicio
hod2Finanzas
hod3Tecnología
hod5Apoyo
hod3Servicio
hod3Finanzas
hod5HORA

La cláusula GROUP BY funciona tanto en hod como en el departamento para buscar las filas únicas en el escenario mencionado anteriormente. Verificará la combinación de hod y departamento contra otras entradas de hod y departamento para identificar su singularidad. Si el hod es el mismo pero el departamento es diferente, entonces esa fila se trata como única. Si el hod y el departamento son iguales para más de una fila, entonces la entrada duplicada no se crea y solo se muestra una fila.

Operaciones de cláusula GROUP BY

Podemos usar la cláusula Group By con varias funciones de agrupación y agregación. Tomemos algunos ejemplos utilizando las dos tablas mencionadas anteriormente, es decir, EMPLEADO y Employee_Department.

Ejemplo 1

Obtener el recuento de empleados y empleadas en la empresa.

SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;

La ejecución de esta consulta obtiene el siguiente resultado:

COUNT ('nombre')género
5 5Masculino
5 5Hembra

Ejemplo # 2

Obtener el recuento de departamentos de la empresa en orden descendente del recuento.

SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;

La ejecución de esta consulta obtiene el siguiente resultado:

COUNT ('nombre')Departamento
3Servicio
3Finanzas
2Tecnología
1Apoyo
1HORA

Ejemplo # 3

Obtener el recuento de diferentes departamentos bajo la misma dirección en la empresa en orden descendente del recuento.

SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;

La ejecución de esta consulta obtiene el siguiente resultado:

COUNT ('nombre')capachoDepartamento
2hod1Servicio
2hod2Finanzas
2hod3Tecnología
1hod5Apoyo
1hod3Servicio
1hod3Finanzas
1hod5HORA

La cláusula HAVING en SQL

El uso de la cláusula HAVING con la cláusula Group By restringirá el resultado de la consulta a las filas que tengan el valor mencionado con la cláusula Have.

Comprender esto con un ejemplo lo hará más fácil:

Ejemplo # 4

SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;

La ejecución de esta consulta obtiene el siguiente resultado:

nombreañosteléfonogénerocorreo electrónico
Mayo22456Hembra
Ana45644Hembra
Ollas573456Hembra
Res45456Hembra
Pálido557789Hembra

Ejemplo # 5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

La ejecución de esta consulta obtiene el siguiente resultado:

nombrecapachoDepartamento
Mayohod2Finanzas
Ollashod2Finanzas
Tunghod3Finanzas

Conclusión

Usando la cláusula GROUP BY con la instrucción SELECT podemos agrupar filas con los mismos valores junto con el uso de funciones, constantes y expresiones agregadas.

Artículos recomendados

Esta es una guía de la cláusula GROUP BY en SQL. Aquí discutimos cómo funciona la cláusula GROUP BY en SQL con la ayuda de ejemplos y tablas de empleados. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. Consulta de inserción de SQL
  2. Vistas SQL
  3. Base de datos en SQL
  4. Transacciones en SQL