English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderás cómo agrupar filas basadas en valores de columnas.
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.