English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Cláusula GROUP BY de SQL

En este tutorial, aprenderás cómo agrupar filas basadas en valores de columnas.

filas agrupadas

La cláusula GROUP BY conSELECTLa sentencia yFunciones de agregaciónusados conjuntamente para agrupar filas según valores de columnas comunes

Para entender esto mejor, veamos lo siguienteemployeesYdepartmentsTabla.

+--------+--------------+------------+---------+
| emp_id | emp_name  | fecha_contratación | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 | NULL  |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name  |
+---------+------------------+
|       1 | Administración |
|       2 | Servicio al Cliente |
|       3 | Finanzas  |
|       4 | Recursos Humanos |
|       5 | Ventas  |
+---------+------------------+
Tabla: employees
Tabla: departments

Ahora, no solo se busca el nombre del departamento y el empleado, sino también el número total de empleados en cada departamento.

Para tablas pequeñas, se puede aplicar simplementeUnión izquierday calcular el número de empleados, pero supongamos que si una tabla contiene miles de empleados, eso no será tan fácil.

En este caso, se puede usar la cláusula GROUP BY junto con la sentencia SELECT, como se muestra a continuación:

SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name;

Si ejecuta la siguiente declaración, obtendrá el siguiente resultado:

+-------------------+-----------------+
| dept_name         | total_employees |
+-------------------+-----------------+
| Administración    |               1 |
| Servicio al Cliente  |               0 |
| Finanzas           |               1 |
| Recursos Humanos   |               1 |
| Sales             |               1 |
+-------------------+-----------------+

En el siguiente capítulo, aprenderá cómo usar la cláusula HAVING y GROUP BY para especificar condiciones de búsqueda para grupos o agregados.

Nota:en SQL SELECTen la declaración, la cláusula GROUP BY debe aparecer después de FROM yWHEREdespués de la cláusula y debe aparecerORDER BYanterior.