Introdução à cláusula GROUP BY no SQL
Nos casos em que precisamos agrupar as linhas com o mesmo valor, a cláusula Group By entra em cena. A cláusula GROUP BY é um comando no SQL que executará esta operação.
O ponto importante a ser lembrado aqui é que a cláusula GROUP BY é usada na instrução SELECT na consulta após a cláusula WHERE.
Sintaxe
A sintaxe da cláusula Agrupar por é -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Explicação da sintaxe
- Instrução SELECT - consulta de comando SQL
- nome_tabela - o nome da tabela do banco de dados que está sendo referida
- conditions - consulte as condições a serem verificadas
- GROUP BY - cláusula para agrupar as mesmas linhas
- ORDER BY - sempre usado após a cláusula Group By para organizar as linhas em ordem crescente ou decrescente. Esta é uma condição opcional.
Como a cláusula GROUP BY funciona no SQL?
Para entender o funcionamento da cláusula Group By, tomemos a ajuda de um exemplo. Considere uma tabela com o nome de EMPREGADO, que contém os detalhes básicos do funcionário, como nome, idade, número de telefone, data de nascimento, sexo, endereço, ID de email etc.
Tabela de funcionários
nome | era | telefone | gênero | o email |
John | 23 | 123 | Masculino | |
Pode | 22 | 456 | Fêmea | |
Ana | 45 | 644 | Fêmea | |
Vasos | 57 | 3456 | Fêmea | |
Res | 45 | 456 | Fêmea | |
bronzeado | 78 | 2456 | Masculino | |
Correu | 34 | 5899 | Masculino | |
Wan | 55 | 7789 | Fêmea | |
Tung | 32. | 5689 | Masculino | |
Chung | 21 | 4678 | Masculino |
Considere que o EMPREGADO possui cerca de 10 entradas.
Vamos primeiro obter os diferentes valores de "gênero" nesta tabela. A consulta que nos ajudará a alcançar nosso objetivo seria:
SELECT gender FROM EMPLOYEE;
Isso nos fornecerá os seguintes valores:
gênero |
Masculino |
Fêmea |
Fêmea |
Fêmea |
Fêmea |
Masculino |
Masculino |
Fêmea |
Masculino |
Masculino |
O problema aqui é a redundância dos valores, ou seja, como podemos ver, existem apenas dois valores únicos de gênero na tabela, mas a saída não fornece apenas os valores únicos, mas todos os valores, mesmo que sejam repetitivos.
Portanto, para obter apenas os valores exclusivos da tabela, usaremos a seguinte consulta -
SELECT gender FROM EMPLOYEE GROUP BY gender;
O resultado que recebermos após executar esta consulta será -
gênero |
Masculino |
Fêmea |
O Agrupar por agrupará todos os mesmos valores nas linhas e retornará apenas uma única entrada ou uma única linha para eles, como ocorreu com as linhas "Masculino" e "Feminino" na tabela. Isso resultou em apenas dois valores únicos que estavam presentes na coluna "gênero" i, e. Feminino e masculino.
Agora, vamos dar outro exemplo de uma tabela que contém os detalhes do departamento ao qual cada um desses funcionários está associado. Vamos chamar isso de tabela Employee_Department.
Tabela de departamento de funcionários
nome | hod | departamento |
John | hod1 | Serviço |
Pode | hod2 | Finança |
Ana | hod1 | Serviço |
Vasos | hod2 | Finança |
Res | hod3 | Tecnologia |
bronzeado | hod5 | Apoio, suporte |
Correu | hod3 | Serviço |
Wan | hod3 | Tecnologia |
Tung | hod3 | Finança |
Chung | hod5 | HR |
Então agora vamos executar a consulta abaixo e procurar o resultado -
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
A execução desta consulta busca o seguinte resultado -
hod | departamento |
hod1 | Serviço |
hod2 | Finança |
hod3 | Tecnologia |
hod5 | Apoio, suporte |
hod3 | Serviço |
hod3 | Finança |
hod5 | HR |
A cláusula GROUP BY funciona no hod e no departamento para procurar as linhas exclusivas no cenário mencionado acima. Ele verificará a combinação de hod e departamento com outras entradas do hod e departamento para identificar sua exclusividade. Se o hod for o mesmo, mas o departamento for diferente, essa linha será tratada como única. Se o hod e o departamento forem iguais para mais de uma linha, a entrada duplicada não será criada e apenas uma linha será exibida.
Operações da cláusula GROUP BY
Podemos usar a cláusula Agrupar por com várias funções de agrupamento e agregação. Vamos dar alguns exemplos usando as duas tabelas mencionadas acima, isto é, EMPLOYEE e Employee_Department.
Exemplo 1
Obtendo a contagem de funcionários do sexo masculino e feminino na empresa.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
A execução desta consulta busca o seguinte resultado -
COUNT ('nome') | gênero |
5 | Masculino |
5 | Fêmea |
Exemplo 2
Obtendo a contagem de departamentos da empresa em ordem decrescente da contagem.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
A execução desta consulta busca o seguinte resultado -
COUNT ('nome') | departamento |
3 | Serviço |
3 | Finança |
2 | Tecnologia |
1 1 | Apoio, suporte |
1 1 | HR |
Exemplo 3
Obtendo a contagem de diferentes departamentos sob o mesmo código na empresa em ordem decrescente da contagem.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
A execução desta consulta busca o seguinte resultado -
COUNT ('nome') | hod | departamento |
2 | hod1 | Serviço |
2 | hod2 | Finança |
2 | hod3 | Tecnologia |
1 1 | hod5 | Apoio, suporte |
1 1 | hod3 | Serviço |
1 1 | hod3 | Finança |
1 1 | hod5 | HR |
A cláusula HAVING no SQL
O uso da cláusula HAVING com a cláusula Group By restringirá o resultado da consulta às linhas com o valor mencionado na cláusula Having.
Compreender isso com um exemplo facilitará -
Exemplo 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
A execução desta consulta busca o seguinte resultado -
nome | era | telefone | gênero | o email |
Pode | 22 | 456 | Fêmea | |
Ana | 45 | 644 | Fêmea | |
Vasos | 57 | 3456 | Fêmea | |
Res | 45 | 456 | Fêmea | |
Wan | 55 | 7789 | Fêmea |
Exemplo 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
A execução desta consulta busca o seguinte resultado -
nome | hod | departamento |
Pode | hod2 | Finança |
Vasos | hod2 | Finança |
Tung | hod3 | Finança |
Conclusão
Usando a cláusula GROUP BY com a instrução SELECT, podemos agrupar linhas com os mesmos valores, juntamente com o uso de funções agregadas, constantes e expressões.
Artigos recomendados
Este é um guia para a cláusula GROUP BY no SQL. Aqui discutimos como a cláusula GROUP BY funciona no SQL com a ajuda das tabelas Examples e Employee. Você também pode consultar os seguintes artigos para saber mais -
- Consulta de Inserção SQL
- Exibições SQL
- Banco de dados em SQL
- Transações em SQL