Um componente importante para o Analista resumir os dados tais como vendas, lucro, custo, e salário. O resumo dos dados é muito útil para o Analista criar uma visualização, concluir os resultados, e redigir relatórios. Em SQL, GROUP BY Clause é uma das ferramentas para resumir ou agregar as séries de dados. Por exemplo, resumir as vendas diárias e combiná-las num único trimestre e mostrá-las aos quadros superiores. Da mesma forma, se quiser contar quantos empregados em cada departamento da empresa. Agrupa as bases de dados com base em uma ou mais colunas e agrega os resultados.
Após agrupar os dados, pode filtrar o registo agrupado usando a Cláusula HAVING. A Cláusula HAVING devolve os registos agrupados que correspondem à condição dada. Também é possível ordenar os registos agrupados usando ORDER BY. PEDIDO POR, utilizado após GROUP BY na coluna agregada.
Neste tutorial, vai aprender GRUPO POR Cláusula em detalhe com exemplos relevantes. Aqui está a lista de tópicos que irá aprender neste tutorial:
- Grupo Por Cláusula
- Cláusula de Salvamento
- Funções Agregadas
- Comparar Tendo e Onde Cláusula em SQL
- GRUPO POR Exemplo de Junção
- GROUPO POR Comparação com outras Cláusulas
- Mãos-on Practice Assignment
- Conclusion
Group By Clause
O GRUPO POR Cláusula é utilizado em SQL com a instrução SELECT para organizar dados semelhantes em grupos. Combina os múltiplos registos em uma ou mais colunas, utilizando algumas funções. Geralmente, estas funções são funções agregadas tais como min(),max(),avg(), count(), e sum() para combinar em colunas simples ou múltiplas. Utiliza a estratégia split-apply-combine para a análise de dados.
- No
split phase
, divide os grupos com os seus valores. - No
apply phase
, Ele aplica a função agregada e gera um único valor. - No
combiner phase
, Ele combina os grupos com valores únicos num único valor.
Image source
Pontos a Recordar:
- GROUPO POR Cláusula é utilizado com a declaração SELECT.
- GROUP BY agrega os resultados com base na coluna seleccionada: COUNT, MAX, MIN, SUM, AVG, etc.
li>GROUP BY retorna apenas um resultado por grupo de dados.li>GROUP BY Clause segue sempre a cláusula WHERE.li>GROUP BY Clause precede sempre a cláusula ORDER BY(http://slideplayer.com/slide/15440670/).
No exemplo acima, a Tabela é agrupada com base na coluna DeptID e o Salário é agregado por departamento.
Having Clause
HAVING Clause utilizada em SQL como uma cláusula condicional com GROUP BY Clause. Esta cláusula condicional retorna linhas em que os resultados da função agregada só coincidem com determinadas condições. Foi adicionada no SQL porque a cláusula WHERE não pode ser combinada com resultados agregados, pelo que tem um propósito diferente. A finalidade principal da cláusula WHERE é lidar com registos não agregados ou individuais.
- HAVING Clause sempre utilizada em combinação com GROUP BY Clause.
- HAVING Clause restringe os dados nos registos do grupo em vez de registos individuais.
- li>WHERE e HAVING podem ser utilizados numa única consulta.
No exemplo acima, a tabela é agrupada com base na coluna DeptID e estas linhas agrupadas filtradas usando a cláusula HAVING com a condição AVG(Salary) > 3000.
Funções agregadas
Funções agregadas utilizadas para combinar o resultado de um grupo num único como COUNT, MAX, MIN, AVG, SUM, STDDEV, e VARIANCE. Estas funções também conhecidas como funções de múltiplas linhas.
-
SUM()
: Retorna a soma ou total de cada grupo. -
COUNT()
: Devolve o número de linhas de cada grupo. -
AVG()
: Retorna a média e a média de cada grupo. -
MIN()
: Devolve o valor mínimo de cada grupo. -
MAX()
: Retorna o valor mínimo de cada grupo.
Compare Tendo e Onde Cláusula em SQL
- Em alguns casos, é necessário filtrar os registos individuais. Nesses casos, pode usar a cláusula WHERE, enquanto noutros casos precisa de filtrar os grupos com a condição específica. Nesses casos, pode usar a Cláusula HAVING.
- AQUI>A Cláusula filtra os registos tuple por tuple enquanto a Cláusula HAVING filtra todo o grupo.
- Uma consulta pode ter tanto as cláusulas( WHERE e HAVING Clause).
- Where Clause applied first and then Have Clause.
- AQUI A Cláusula restringe registos antes da Cláusula GRUPO POR GRUPO, enquanto que a Cláusula HAVING restringe grupos após a realização da Cláusula GRUPO POR GRUPO.
- AQUI A Cláusula pode ser utilizada com SELECT, UPDATE, DELETE, e INSERT, enquanto que a Cláusula HAVING só pode ser utilizada com a declaração SELECT.
Image Source
GROUP BY With JOIN Example
A base de dados relacional normalizada decompõe a tabela complexa em pequenas tabelas, o que o ajuda a eliminar a redundância de dados, a inconsistência e a garantir que não há perda de informação. As tabelas normalizadas requerem a junção de dados de múltiplas tabelas.
No exemplo acima, Empregado e Departamento são unidos utilizando a coluna comum DeptID.
No exemplo acima, Juntar e GRUPO POR ambas as cláusulas utilizadas em conjunto numa única consulta. Após juntar ambas as tabelas (Empregado e Departamento), junta-se tabela agrupada pelo nome do Departamento.
GROUP BY Comparação com Outra Cláusula
Compare GROUP BY e DISTINCT
DISTINCT retorna os valores únicos presentes na coluna enquanto GROUP BY retorna itens únicos/distintos com a coluna resultante agregada. No exemplo seguinte é possível ver os valores DISTINCT na tabela dept
.
Compare GROUP BY e ORDER BY
ORDER BY devolve itens classificados em ordem ascendente e descendente enquanto que GROUP BY devolve itens únicos com a coluna resultante agregada. No exemplo seguinte, pode ver a tabela de ordenados ORDER BY ou ordenados por ordem.
Prática de Atribuição de Práticas Práticas Práticas
Nome da Mesa: Livros
Colunas: ISBN, Título, Data de publicação, Preço, Editora
Escrever consultas SQL para as seguintes afirmações e partilhar as suas respostas nos comentários:
- Determinar quantos livros estão em cada categoria.
- Determinar quantos livros estão na categoria Gestão.
- Determinar o preço médio do livro de cada categoria.
- Lista o preço do livro mais barato em cada categoria.
Fonte: Esta atribuição é inspirada no livro “Oracle 11g SQL” de John Casteel.
Conclusion
Congratulações, chegou ao fim deste tutorial!
Neste tutorial, cobriu muitos detalhes sobre a Cláusula “GRUPO POR e TENDO”. Aprendeu o que é a Cláusula “GROUP BY and HAVING” com exemplos, Comparação entre a Cláusula “HAVING” e “WHERE” em SQL, GROUP BY com JOIN, e GROUP BY Comparação com DISTINCT e ORDER BY. Na última secção, tem uma tarefa prática de HAVING para avaliar os seus conhecimentos.
Esperativamente, pode agora utilizar o conceito de GROUP BY e HAVING Clause para analisar os seus próprios conjuntos de dados. Obrigado por ler este tutorial!
Se estiver interessado em aprender mais sobre SQL, faça o curso SQL Intermediário de DataCamp.