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

Cláusula GROUP BY do SQL

Neste tutorial, você aprenderá como agrupar linhas com base em valores de coluna.

linhas agrupadas

cláusula GROUP BY comSELECTdeclaraçãoFunções de agregaçãousados conjuntamente para agrupar linhas com valores comuns

Para facilitar a compreensão, vamos ver a seguiremployeesEdepartmentsTabela.

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | 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 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+
Tabela: employees
Tabela: departments

Agora, não é apenas para encontrar o nome do departamento e os funcionários, mas para encontrar o número total de funcionários em cada departamento.

Para tabelas pequenas, você pode simplesmente aplicarJunção esquerdaE calcular o número de funcionários, mas supondo que uma tabela contenha milhares de funcionários, isso não será tão fácil.

Neste caso, pode-se usar a cláusula GROUP BY juntamente com a declaração SELECT, conforme exemplo a seguir:

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;

Se executar a declaração acima, você obterá a seguinte saída:

+-------------------+-----------------+
| dept_name         | total_employees |
+-------------------+-----------------+
| Administração    |               1 |
| Serviço ao Cliente  |               0 |
| Finanças           |               1 |
| Recursos Humanos   |               1 |
| Sales             |               1 |
+-------------------+-----------------+

No próximo capítulo, você aprenderá como usar a cláusula HAVING e GROUP BY para especificar condições de pesquisa para agrupamentos ou agregações.

Atenção:Em SQL SELECTNa declaração, a cláusula GROUP BY deve aparecer apósWHEREPós-cláusula, e aparece apósORDER BYAntes.