Saltar para o conteúdo

Group by (SQL)

Origem: Wikipédia, a enciclopédia livre.
Navegação no histórico de edições: ← ver edição anterior (dif) ver edição seguinte → (dif) ver última edição → (dif)

Uma instrução GROUP BY em SQL especifica que uma instrução SQL SELECT particiona linhas de resultados em grupos, com base em seus valores em uma ou várias colunas. Normalmente, o agrupamento é usado para aplicar algum tipo de função agregada para cada grupo. [1] [2]

O resultado de uma consulta usando uma instrução GROUP BY contém uma linha para cada grupo. Isso implica restrições nas colunas que podem aparecer na cláusula SELECT associada. Como regra geral, a cláusula SELECT só pode conter colunas com um valor exclusivo por grupo. Isso inclui colunas que aparecem na cláusula GROUP BY, bem como agregados que resultam em um valor por grupo. [3]

Exemplos

Retorna uma lista de IDs de departamentos junto com a soma de suas vendas na data de 1º de janeiro de 2000.

   SELECT DeptID, SUM(SaleAmount) FROM Sales
    WHERE SaleDate = '01-Jan-2000'
 GROUP BY DeptID

No exemplo a seguir, pode-se perguntar "Quantas unidades foram vendidas em cada região para cada data de envio? ":

Soma de unidades Data de envio ▼
Região ▼ 2005-01-31 2005-02-28 2005-03-31 2005-04-30 2005-05-31 2005-06-30
Leste 66 80 102 116 127 125
Norte 96 117 138 151 154 156
Sul 123 141 157 178 191 202
Oeste 78 97 117 136 150 157
(em branco)
Total geral 363 435 514 581 622 640

O código a seguir retorna os dados da tabela dinâmica acima, que responde à pergunta "Quantas unidades foram vendidas em cada região para cada data de envio?":

   SELECT Region, Ship_Date, SUM(Units) AS Sum_of_Units
     FROM FlatData
 GROUP BY Region, Ship_Date

Agrupamentos comuns

As funções comuns de agrupamento ( agregação ) incluem:

  • Count( expressão ) - Quantidade de registros correspondentes (por grupo)
  • Sum( expressão ) - Soma do valor dado (por grupo)
  • Min( expressão ) - Mínimo do valor fornecido (por grupo)
  • Max( expressão ) - Máximo do valor fornecido (por grupo)
  • Avg ( expressão ) - Média do valor fornecido (por grupo)

Referências

  1. «SQL GROUP BY Statement». www.w3schools.com. Consultado em 18 de setembro de 2020 
  2. shkale-msft. «GROUP BY (Transact-SQL) - SQL Server». docs.microsoft.com (em inglês). Consultado em 18 de setembro de 2020 
  3. «SQL Grouping and Aggregation». databaselecture.com (em inglês). Consultado em 9 de dezembro de 2020