Group by (SQL)
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
- ↑ «SQL GROUP BY Statement». www.w3schools.com. Consultado em 18 de setembro de 2020
- ↑ shkale-msft. «GROUP BY (Transact-SQL) - SQL Server». docs.microsoft.com (em inglês). Consultado em 18 de setembro de 2020
- ↑ «SQL Grouping and Aggregation». databaselecture.com (em inglês). Consultado em 9 de dezembro de 2020