Voltar para a lista de artigos Artigos
14 minutos de leitura

Funções agregadas do SQL: Um guia abrangente para iniciantes

Você tem curiosidade sobre as funções agregadas do SQL e como elas se aplicam a cenários do mundo real? Neste artigo, exploraremos as funções agregadas do SQL, mostraremos exemplos do mundo real e ofereceremos insights valiosos sobre como dominá-las.

A agregação de dados é o processo de pegar várias linhas de dados e condensá-las em um único resultado ou resumo. Ao lidar com grandes conjuntos de dados, isso é inestimável, pois permite extrair insights relevantes sem precisar examinar cada ponto de dados individualmente.

Então, o que são exatamente as funções agregadas do SQL? São funções especializadas que realizam cálculos em grupos de variáveis e retornam um único resultado. Diferentemente das funções tradicionais, as funções de agregação funcionam em grupos de linhas de dados. Isso permite que você calcule estatísticas com eficiência ou gere informações resumidas de um conjunto de dados.

Neste artigo, veremos a importância das funções agregadas do SQL e como usá-las. Vamos explicá-las usando exemplos do mundo real. Parece interessante, não é? Então confira nosso curso sobre Funções Comuns em SQL. Ele é um ótimo ponto de partida para aprender a processar dados usando as funções mais usadas do SQL!

Explorando as funções agregadas comuns do SQL

No mundo do SQL, as funções agregadas são ferramentas essenciais para a análise e o resumo eficientes de dados. Elas têm a capacidade exclusiva de destilar grandes conjuntos de dados em insights significativos, facilitar a análise estatística e simplificar estruturas de dados complexas.

As funções agregadas do SQL usadas com mais frequência são:

  • SUM()
  • COUNT()
  • AVG()
  • MIN()
  • MAX()

Vamos explorar cada uma delas a seguir.

1. SUM()

A função SUM() retorna o total de uma coluna numérica. Normalmente, ela é usada quando você precisa encontrar o total de valores, como receita de vendas, quantidades ou despesas.

Imagine que você queira saber toda a receita de vendas da sua empresa; você pode fazer isso executando a seguinte consulta:

SELECT SUM(sales_amount) as total_revenue
FROM sales_data;

2. COUNT()

A próxima na linha é a função COUNT(). O objetivo dessa função é contar o número de linhas em uma tabela ou o número de valores não nulos em uma coluna.

Suponha que você queira descobrir quantos produtos são vendidos em sua loja; você pode usar a seguinte consulta:

SELECT COUNT(*) as total_products
FROM products;

Nessa consulta, usamos o asterisco (*) para indicar todas as colunas. E estamos contando todas as linhas da consulta.

3. AVG()

Quando você precisa calcular o valor médio (average) de uma coluna numérica, a função AVG() é a melhor opção. Ela é útil ao procurar o preço médio, a classificação, as unidades vendidas e assim por diante. Essa consulta, por exemplo, seria útil se você administrasse um serviço de streaming baseado em assinatura e quisesse descobrir a duração média das sessões de usuário em sua plataforma:

SELECT AVG(session_duration) as average_session_duration
FROM user_sessions;

4. MIN()

A função MIN() retorna o menor valor em uma coluna. É especialmente útil para localizar o valor mais baixo ou menor em um conjunto de dados.

Considere um gerente tentando identificar o tempo de resposta mais rápido a uma pergunta de cliente para tíquetes de suporte; a consulta a seguir pode retornar a resposta:

SELECT MIN(response_time) as shortest_response_time
FROM customer_support_tickets;

5. MAX()

Por outro lado, a função MAX() retorna o maior valor em uma coluna. Ela é útil para determinar o valor mais alto em um conjunto de dados.

Suponha que você tenha um site de comércio eletrônico e queira saber o valor mais alto do pedido feito por um cliente em sua loja on-line. Essa é a consulta que você escreveria:

SELECT MAX(order_value) as max_order_value
FROM customer_orders;

Para obter mais exemplos das funções MIN() e MAX(), consulte Funções SQL MIN e MAX Explicadas em 6 Exemplos.

Agregação de dados no SQL

Agora que já vimos algumas das funções de agregação mais usadas no SQL, vamos dar uma olhada mais de perto no conceito de agregação de dados no SQL.

A agregação de dados é uma técnica poderosa para resumir e analisar informações de um conjunto de dados. Ela permite que você obtenha insights úteis fazendo cálculos em agrupamentos de dados vinculados, eliminando a necessidade da inspeção demorada de registros individuais.

Para tornar esse conceito mais concreto, considere os seguintes casos de uso no mundo real:

  • Vendas: Entender como as diferentes categorias de produtos contribuem para o total de vendas é fundamental para o proprietário de uma loja. Você pode determinar qual categoria de produto gera mais dinheiro agregando dados de vendas para cada categoria de produto.
  • Notas dos alunos: Se você é professor, talvez queira descobrir a nota média de cada disciplina em sua classe. Ao agregar os dados das notas dos alunos, você pode determinar as médias por matéria e identificar as áreas que precisam ser melhoradas.
  • Tráfego do site: Suponha que você administre um website e queira saber quais páginas recebem mais tráfego. Você pode encontrar as páginas mais populares e gerenciar os recursos com mais eficiência agregando as estatísticas de tráfego do site.
  • Salários dos funcionários: Imagine que você é gerente de RH em uma empresa e está procurando informações sobre os salários dos diferentes departamentos. O SQL pode ajudá-lo a agregar e analisar os dados de cada departamento.

Liberando o poder das funções agregadas do SQL com GROUP BY

Na maioria das vezes, usar as funções de agregação do SQL significa usar a cláusula GROUP BY. Essa combinação poderosa permite que você execute cálculos agregados em agrupamentos específicos de dados em seu conjunto de dados.

A cláusula SQL GROUP BY separa o conjunto de dados em grupos com base em valores correspondentes em uma ou mais colunas; isso permite que você aplique funções de agregação a cada grupo independentemente. Veja abaixo uma visão geral da sintaxe GROUP BY:

SELECT 
  column1, 
  column2, 
  aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

Nessa consulta, os dados com valores correspondentes em column1 e column2 se tornarão os grupos; aggregate_function(column3) é a função de agregação que você deseja aplicar aos valores de column3 em cada grupo. Vamos dar uma olhada em alguns exemplos.

Exemplo 1: Agrupamento por cidade e cálculo do salário médio

Imagine que você tenha um banco de dados de funcionários que inclui informações sobre nomes, cidades e salários dos funcionários. Seu objetivo é descobrir qual é o salário médio em cada cidade. Você pode fazer isso com a seguinte consulta:

SELECT 
  city, 
  AVG(salary) as average_salary
FROM employee_data
GROUP BY city;

Agora, vamos detalhar a consulta passo a passo:

Etapa 1: Agrupamento por cidade

O banco de dados inicia o processo organizando os funcionários em grupos com base em sua cidade de residência. Cada grupo de cidades é representado visualmente abaixo por uma cor diferente:

  • Grupo 1: Nova York (amarelo)
  • Grupo 2: São Francisco (vermelho)
  • Grupo 3: Los Angeles (verde)
employee_namecitysalary
JohnNew York60000
JaneNew York55000
BobSan Francisco70000
AliceSan Francisco72000
MikeLos Angeles62000
EmilyLos Angeles64000

Etapa 2: Cálculo dos salários médios

Em cada grupo de cidades, o banco de dados calcula o salário médio aplicando a função de agregação AVG() à coluna salary.

Resultado final:

Essa consulta SQL gera o salário médio de cada cidade, conforme ilustrado abaixo. A execução dessa consulta fornece informações valiosas sobre as tendências e disparidades de remuneração nas cidades onde seus funcionários residem. Esses insights podem ser fundamentais para a tomada de decisões informadas sobre ajustes salariais, considerações sobre o custo de vida e muito mais.

cityaverage_sale
New York57500
San Francisco71000
Los Angeles63000

Exemplo 2: Agrupamento por categoria de produto e localização de vendas totais

Suponha que você tenha um conjunto de dados de vendas com categorias de produtos e quantidades de vendas. Seu objetivo é determinar o total de vendas de cada categoria de produto. Aqui está a consulta:

SELECT 
  product_category, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category;

Essa consulta agrupa os dados de vendas por categoria de produto e calcula os valores totais de vendas para cada grupo. Ela fornece insights úteis sobre as categorias de produtos mais lucrativas. Mais exemplos dessa combinação podem ser encontrados em Como usar SUM() com GROUP BY: Um guia detalhado com 8 exemplos.

Exemplo 3: Agrupamento por ano e mês para contar pedidos

Digamos que você administre uma plataforma de comércio eletrônico com um banco de dados que inclui datas de pedidos. Você deseja controlar a quantidade de pedidos feitos a cada ano e mês. A consulta a seguir pode fazer isso:

SELECT 
  EXTRACT(YEAR FROM order_date) as order_year, 
  EXTRACT(MONTH FROM order_date) as order_month, 
  COUNT(*) as order_count
FROM orders
GROUP BY order_year, order_month
ORDER BY order_year, order_month;

Essa consulta agrupa os pedidos por ano e mês, fornecendo uma linha do tempo da contagem de pedidos. Ela é bastante útil para acompanhar mudanças sazonais e estimar números de pedidos mensais. Exemplos semelhantes do mundo real podem ser encontrados em Como usar COUNT() com GROUP BY.

Em cada um desses exemplos, a cláusula GROUP BY divide os dados em grupos com base em determinadas colunas e as funções de agregação (AVG(), SUM() e COUNT()) executam cálculos em cada grupo. Mais exemplos podem ser encontrados em nosso artigo Usando GROUP BY em SQL.

Exemplos reais de uso das funções agregadas do SQL

Agora que abordamos os fundamentos das funções agregadas e da cláusula GROUP BY, vamos ver como podemos usá-las em outros exemplos do mundo real.

1) Agrupamento por categorias de produtos para insights de vendas

Imagine que você tenha um banco de dados de vendas e queira encontrar a data do pedido mais recente para cada categoria de produto. Para isso, precisamos agrupar os dados pela coluna product_category e usar a função MAX() para selecionar a data de pedido mais recente (ou seja, a maior):

SELECT 
  product_category, 
  MAX(order_date) as most_recent_order_date
FROM sales_data
GROUP BY product_category;

A análise da data do pedido mais recente de cada categoria de produto ajuda a identificar as tendências atuais do mercado e a demanda do produto.

2. Análise de vendas por categoria de produto e ano

Uma análise mais extensa pode exigir o agrupamento de dados por várias colunas. Por exemplo, suponha que você precise saber o total de vendas de cada categoria de produto e ano. Aqui está a consulta:

SELECT 
  product_category, 
  EXTRACT(YEAR FROM order_date) as sales_year, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category, sales_year;

Essa consulta agrupa os dados por duas colunas, o que nos permite analisar as vendas por categoria de produto e ano e, assim, fornecer insights mais detalhados e granulares.

3. Filtragem de categorias de produtos com vendas altas

Talvez você precise filtrar grupos dependendo do resultado de uma função agregada. Nesses casos, a cláusula HAVING é o que você precisa. Suponha que você queira encontrar categorias de produtos com vendas totais superiores a US$ 10.000:

SELECT 
  product_category, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category
HAVING SUM(sales_amount) > 10000;

A cláusula HAVING filtra os resultados agrupados, exibindo as categorias de produtos com um total de vendas superior ao limite fornecido.

É importante observar que as funções agregadas não podem ser usadas na cláusula WHERE. As funções agregadas atuam nos dados que foram agrupados usando a cláusula GROUP BY, enquanto a cláusula WHERE filtra as linhas individuais antes de serem agrupadas.

4. Contagem de clientes únicos

A contagem de valores distintos em uma coluna é essencial para várias análises. Por exemplo, talvez você queira descobrir o número de clientes exclusivos:

SELECT 
  COUNT(DISTINCT customer_id) as unique_customers
FROM sales_data;

Essa consulta conta o número de IDs de clientes exclusivos nos dados de vendas, o que pode ser útil ao trabalhar com conjuntos de dados que contêm duplicatas.

5. Distinguindo as funções COUNT() para gerar relatórios precisos

É importante entender a diferença entre COUNT(*) e COUNT(expression). COUNT(*) conta todas as linhas em um grupo, enquanto COUNT(expression) conta apenas os valores nãoNULL da expressão fornecida em um grupo. NULL valores representam dados ausentes ou desconhecidos em um conjunto de dados.

Vamos dar uma olhada em um exemplo:

SELECT product_category,
       COUNT(*) as total_orders,
       COUNT(discount) as discounted_orders
FROM sales_data
GROUP BY product_category;

Aqui, COUNT(*) conta todos os pedidos em cada categoria de produto, inclusive aqueles com valores NULL na coluna de desconto. COUNT(discount), por outro lado, conta somente os pedidos com valores nãoNULL na coluna discount dentro de cada categoria. Confira nosso artigo Qual é a diferença entre COUNT(*), COUNT(1), COUNT(nome da coluna) e COUNT(nome da coluna DISTINCT)? para obter mais exemplos de uso da função COUNT().

6. Obtenção de insights abrangentes sobre categorias de produtos

O SQL permite que você use várias funções agregadas em uma única consulta para obter uma visão completa dos seus dados. Por exemplo, vamos encontrar o total de vendas, o preço médio e o preço mínimo de cada categoria de produto:

SELECT product_category,
       SUM(sales_amount) as total_sales,
       AVG(product_price) as avg_price,
       MIN(product_price) as min_price
FROM sales_data
GROUP BY product_category;

Essa consulta extrai efetivamente vários insights de seus dados e, ao mesmo tempo, fornece um resumo conciso.

Perguntas frequentes sobre a função agregada do SQL

Para concluir, vamos abordar algumas perguntas frequentes sobre as funções agregadas do SQL:

Posso usar duas funções de agregação em uma consulta?

Sim. Conforme demonstrado nos exemplos anteriores, é possível usar várias funções de agregação em uma única consulta SQL. O uso de várias funções de agregação proporciona uma visão mais abrangente dos dados. Por exemplo, para obter uma compreensão mais clara da distribuição de renda, talvez você queira calcular não apenas o salário médio em um departamento, mas também os salários máximo e mínimo.

Além das funções agregadas gerais que discutimos, os bancos de dados SQL geralmente oferecem funções agregadas especializadas adaptadas a necessidades específicas. Por exemplo, o SQL Server inclui uma função STRING_AGG() para concatenação de strings em um grupo. Ao trabalhar em projetos com requisitos exclusivos de processamento de dados, esses recursos especializados podem ser indispensáveis.

Q. Como posso contar linhas usando uma expressão condicional?

No SQL, as expressões condicionais - geralmente implementadas com a instrução CASE WHEN - podem ser usadas para contar linhas com base em condições especificadas. Por exemplo, você pode contar o número de pedidos com receitas totais acima de US$ 1.000:

SELECT 
  COUNT(CASE WHEN sales_amount > 1000 THEN 1 ELSE NULL END) as high_value_orders
FROM sales_data;

Mais exemplos de consultas semelhantes e uso avançado de expressões condicionais podem ser encontrados em nosso artigo How to Use CASE WHEN in GROUP BY.

Q. Por que as funções agregadas não são permitidas no GROUP BY?

As funções de agregação não são permitidas em GROUP BY porque operam em dados agrupados. GROUP BY destina-se a agrupar linhas de acordo com determinados critérios, enquanto as funções de agregação reduzem as linhas em um único valor. Misturar os dois resultaria em ambiguidade e dificultaria a decisão de como agrupar e agregar corretamente os dados.

Q. Por que eu usaria a cláusula HAVING com funções agregadas no SQL?

Nas consultas SQL que contêm funções de agregação, a cláusula HAVING é usada para filtrar os resultados com base no resultado da função de agregação. Ela permite que você aplique condições a agrupamentos de dados depois que eles tiverem sido agregados. Por exemplo, se você quiser obter apenas departamentos com salário médio de US$ 50.000 ou mais, poderá usar a cláusula HAVING para filtrar os resultados agrupados de acordo.

SELECT 
  department,
  AVG(salary) as average_salary
FROM employee_data
GROUP BY department
HAVING AVG(salary) >= 50000;

Q. Como posso saber mais sobre as funções agregadas do SQL?

Para aprofundar seu conhecimento sobre as funções agregadas do SQL e suas aplicações práticas, considere fazer cursos on-line, ler a documentação do SQL e praticar com conjuntos de dados do mundo real. O curso Funções Comuns em SQL mencionado anteriormente é um ótimo lugar para começar; ele explica como usar as funções SQL em vários tipos de dados e tem 211 tarefas interativas para que você pratique bastante!

Funções agregadas de SQL: Liberando insights sobre os dados

Concluindo, as funções agregadas do SQL são ferramentas poderosas para resumir e avaliar dados em bancos de dados relacionais. Seja você um novato em SQL ou um usuário experiente, saber como usar as funções agregadas de forma eficaz o ajudará a extrair insights úteis dos dados, tomar decisões orientadas por dados e, por fim, melhorar o desempenho dos negócios.

A aquisição de habilidades em SQL pode proporcionar uma vantagem competitiva no atual mercado de negócios orientado por dados. Se você quiser se aprofundar em SQL, recomendo nosso pacote Ilimitado Vitalício SQL Package. Essa oferta contém todos os cursos de SQL atuais e futuros em quatro dialetos SQL diferentes. Aqui estão alguns outros destaques de nossa oferta:

  • SQL de A a Z. Os sete cursos e quase 900 exercícios dessa trilha oferecem um caminho de aprendizado completo para o SQL moderno, desde os conceitos básicos até os avançados.
  • Trilha de Práticas em SQL. Esta trilha é para quem procura muita prática interativa de SQL. Ela contém nove cursos interativos e mais de 800 exercícios práticos - e continuamos adicionando mais.
  • Mensal Trilha de Práticas em SQL. Todo mês, publicamos um novo curso prático de SQL em nível básico ou avançado.

Bom aprendizado!