Articles

SQL GROUP BY and HAVING Clause with Examples


What is the SQL Group by Clause?

o grupo por cláusula é um comando SQL que é usado para agrupar linhas que têm os mesmos valores. O grupo por cláusula é usado na instrução SELECT. Opcionalmente é usado em conjunto com funções agregadas para produzir relatórios de resumo a partir do banco de dados.

é o que ele faz, resumindo dados da base de dados.

As consultas que contêm o grupo por cláusula são chamadas de consultas agrupadas e retornam apenas uma linha para cada item agrupado.,

SQL GROUP BY Syntax

Now that we know what the SQL GROUP BY clause is, let’s look at the syntax for a basic group by query.

SELECT statements... GROUP BY column_name1 ;

AQUI

  • “instruções SELECT…”é a consulta padrão SQL SELECT command.
  • “grupo por column_name1” é a cláusula que realiza o agrupamento com base em column_name1.
  • “” é opcional; representa outros nomes de colunas quando o agrupamento é feito em mais de uma coluna.
  • “” é opcional; é usado para restringir as linhas afetadas pelo grupo por cláusula., É semelhante à cláusula onde.

agrupar usando uma única coluna

a fim de ajudar a compreender o efeito do grupo SQL por cláusula, vamos executar uma consulta simples que devolve todas as entradas de género a partir da tabela de membros.

SELECT `gender` FROM `members` ;


gender

Female


Female


Male


Female


Male


Male


Male


Male


Male


suponha que queremos obter os valores únicos para os géneros. Nós podemos usar uma consulta seguinte –

SELECT `gender` FROM `members` GROUP BY `gender`;

executando o script acima em MySQL workbench contra o Myflixdb nos dá os seguintes resultados.,


gender

Female


Male


nota apenas dois resultados foram retornados. Isto porque só temos dois tipos de sexo masculino e feminino. O grupo por cláusula no SQL agrupou todos os membros “masculinos” e devolveu apenas uma única linha para ele. Fez o mesmo com os membros” femininos”.

agrupar usando múltiplas colunas

suponha que queremos obter uma lista de category_id filme e anos correspondentes em que eles foram lançados.,

Vamos observar a saída deste simples consulta

SELECT `category_id`,`year_released` FROM `movies` ;

category_id year_released
1 2011
2 2008
NULL 2008
NULL 2010
8 2007
6 2007
6 2007
8 2005
NULL 2012
7 1920
8 NULL
8 1920

O resultado acima tem muitos duplicados.

let’s execute the same query using group by in SQL –

executando o script acima em MySQL workbench contra o myflixdb dá-nos os seguintes resultados mostrados abaixo.

category_id year_released
NULL 2008
NULL 2010
NULL 2012
1 2011
2 2008
6 2007
7 1920
8 1920
8 2005
8 2007

The GROUP BY clause operates on both the category id and year released to identify unique rows in our above example.,

Se a categoria id é a mesma, mas o ano lançado é diferente, então uma linha é tratada como uma única .Se o ID da categoria e o ano liberado for o mesmo para mais de uma linha, então é considerado um duplicado e apenas uma linha é mostrada.

agrupar e agregar funções

suponha que queremos o número total de homens e mulheres em nossa base de dados. Podemos usar o seguinte script mostrado abaixo para fazer isso.

SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;

Executar o script acima no MySQL workbench contra o myflixdb nos dá os seguintes resultados.,

gender COUNT('membership_number')
Female 3
Male 5

os resultados mostrados abaixo são agrupados por cada valor de gênero único postado e o número de linhas agrupadas é contado usando a função de contagem agregada.

Restricting query results using the HAVING clause

It’s not always that we will want to perform groups on all the data in a given table. Haverá alturas em que queremos limitar os nossos resultados a determinados critérios. Em tais casos, podemos usar a cláusula de ter

suponha que queremos saber todos os anos de lançamento para a categoria de filme id 8., Usaríamos o seguinte script para alcançar nossos resultados.

SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;

executando o programa acima em MySQL workbench contra o Myflixdb dá-nos os seguintes resultados mostrados abaixo.

movie_id title director year_released category_id
9 Honey mooners John Schultz 2005 8
5 Daddy's Little Girls NULL 2007 8

Nota Apenas os filmes de categoria id 8 foram afectados pelo nosso grupo por cláusula.

resumo

  • O grupo por cláusula SQL é utilizado para agrupar linhas com os mesmos valores.
  • O grupo por cláusula é usado juntamente com a instrução SQL SELECT.,
  • A instrução de seleção usada no grupo por cláusula só pode ser usada contém nomes de colunas, funções agregadas, constantes e expressões.
  • SQL tendo cláusula é usado para restringir os resultados retornados pelo grupo por cláusula.
  • MYSQL GROUP BY Clause is used to collect data from multiple records and returned record set by one or more columns.