De muitas linhas a um único valor
Até agora cada consulta retornava uma linha por registro. As funções agregadas fazem o contrário: pegam um conjunto de linhas e o resumem em um único valor.
| Função | O que calcula |
|---|---|
COUNT(*) |
número de linhas |
COUNT(col) |
número de valores não nulos de col |
SUM(col) |
soma dos valores |
AVG(col) |
média dos valores |
MIN(col) |
valor mínimo |
MAX(col) |
valor máximo |
Por exemplo, sobre a tabela produtos:
SELECT COUNT(*) FROM produtos; -- quantos produtos existem?
SELECT AVG(preco) FROM produtos; -- preço médio de todos
SELECT MIN(preco), MAX(preco) FROM produtos;
Sem GROUP BY, a função agregada atua sobre todas as linhas da tabela
(ou as que sobreviverem ao WHERE) e produz uma única linha de resultado.
Aliases com AS
Uma coluna agregada se chamaria literalmente AVG(preco). Para dar a ela um
nome legível, usa-se AS:
SELECT AVG(preco) AS preco_medio, COUNT(*) AS total
FROM produtos;
COUNT(*)conta linhas (incluindo as que tiverem nulos);COUNT(col)conta apenas as linhas em quecolnão é NULL. Essa diferença importa quando há dados incompletos.