Ao agregar dados no SQL, há momentos em que você precisa calcular totais com base em condições específicas. Por exemplo, você pode querer calcular o total para dados que atendam a certos critérios ou com base em múltiplas condições. Combinando a declaração CASE e a função SUM, você pode obter uma agregação flexível. Este artigo explica os métodos específicos e ensina como escrever consultas SQL para calcular totais condicionais.
Uso Básico da Declaração CASE e da Função SUM
A declaração CASE do SQL e a função SUM são ferramentas poderosas para realizar agregações condicionais. Primeiro, vamos entender o uso básico de cada uma.
Sintaxe Básica da Declaração CASE
A declaração CASE é usada para retornar valores diferentes com base em condições específicas. A sintaxe básica é a seguinte:
CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
...
ELSE valueN
END
Nesta sintaxe, se condition1 for verdadeira, value1 é retornado; se condition2 for verdadeira, value2 é retornado; se nenhuma das condições for atendida, valueN é retornado.
Sintaxe Básica da Função SUM
A função SUM é usada para calcular o total de uma coluna especificada. A sintaxe básica é a seguinte:
SELECT SUM(column_name) FROM table_name;
Nesta sintaxe, o total de todas as linhas na coluna especificada na tabela é calculado.
Combinando a Declaração CASE e a Função SUM
Ao combinar a declaração CASE e a função SUM, você pode calcular o total para dados que atendem a condições específicas. Por exemplo, você pode usá-la da seguinte forma:
SELECT SUM(CASE
WHEN condition THEN value
ELSE 0
END) AS conditional_total
FROM table_name;
Nesta consulta, se a condição for verdadeira, o valor é somado; se a condição for falsa, 0 é somado. Desta forma, o total condicional é calculado.
Exemplos de Consultas SQL para Calcular Totais Condicionais
Vamos ver exemplos específicos de consultas SQL que combinam a declaração CASE e a função SUM para calcular totais condicionais.
Exemplo 1: Calculando o Total para Dados que Atendem a Condições Específicas
Por exemplo, se você tiver uma tabela de dados de vendas e quiser calcular o total de vendas para uma categoria de produto específica, você pode usar a seguinte consulta:
SELECT
SUM(CASE
WHEN category = 'Electronics' THEN sales_amount
ELSE 0
END) AS electronics_sales_total
FROM sales;
Nesta consulta, se a category
for ‘Electronics’, o sales_amount
é somado; caso contrário, 0 é somado. Como resultado, o total de vendas para a categoria ‘Electronics’ é calculado.
Exemplo 2: Calculando Totais com Base em Múltiplas Condições
A seguir, um exemplo de cálculo de diferentes totais com base em múltiplas condições. Por exemplo, se você quiser calcular o total de vendas tanto para eletrônicos quanto para roupas a partir dos dados de vendas, você pode usar a seguinte consulta:
SELECT
SUM(CASE
WHEN category = 'Electronics' THEN sales_amount
ELSE 0
END) AS electronics_sales_total,
SUM(CASE
WHEN category = 'Clothing' THEN sales_amount
ELSE 0
END) AS clothing_sales_total
FROM sales;
Nesta consulta, o sales_amount
é somado se a category
for ‘Electronics’ ou ‘Clothing’, resultando em dois totais de vendas diferentes sendo calculados.
Exemplo 3: Incluindo Cálculos Baseados em Condições no Total
Vamos também ver um exemplo onde diferentes cálculos são realizados com base em condições. Por exemplo, se você quiser calcular o valor total de vendas com um desconto aplicado, pode usar a seguinte consulta:
SELECT
SUM(CASE
WHEN discount_applied = 'Yes' THEN sales_amount * 0.9
ELSE sales_amount
END) AS total_sales_with_discount
FROM sales;
Nesta consulta, se discount_applied
for ‘Yes’, o valor de sales_amount
multiplicado por 0.9 é somado; se nenhum desconto for aplicado, o sales_amount
original é somado. Desta forma, o total de vendas considerando o desconto é calculado.
Métodos para Calcular Totais Usando Múltiplas Condições
Vamos explicar como calcular totais usando múltiplas condições com exemplos específicos. Isso permite agregações mais complexas.
Exemplo 1: Calculando Totais Combinando Múltiplas Condições
Por exemplo, se você quiser calcular o total de vendas para uma região específica e período, você pode usar a seguinte consulta:
SELECT
SUM(CASE
WHEN region = 'North' AND sale_date BETWEEN '2023-01-01' AND '2023-12-31' THEN sales_amount
ELSE 0
END) AS north_region_sales_2023
FROM sales;
Nesta consulta, se a region
for ‘North’ e o sale_date
estiver dentro do ano de 2023, o sales_amount
é somado; caso contrário, 0 é somado.
Exemplo 2: Calculando Diferentes Totais para Diferentes Condições
A seguir, um exemplo de cálculo de diferentes totais para diferentes condições. Por exemplo, se você quiser calcular o total de vendas quando uma promoção específica é aplicada e quando não é, pode usar a seguinte consulta:
SELECT
SUM(CASE
WHEN promotion_applied = 'Yes' THEN sales_amount
ELSE 0
END) AS sales_with_promotion,
SUM(CASE
WHEN promotion_applied = 'No' THEN sales_amount
ELSE 0
END) AS sales_without_promotion
FROM sales;
Nesta consulta, o sales_amount
é somado se promotion_applied
for ‘Yes’ ou ‘No’, resultando em dois totais de vendas diferentes sendo calculados.
Exemplo 3: Calculando Totais Usando Condições Aninhadas
Além disso, vejamos um exemplo de cálculo de totais usando condições aninhadas. Por exemplo, se você quiser aplicar diferentes taxas de desconto com base no tipo de produto e valor das vendas e calcular o total, você pode usar a seguinte consulta:
SELECT
SUM(CASE
WHEN category = 'Electronics' THEN
CASE
WHEN sales_amount > 1000 THEN sales_amount * 0.9
ELSE sales_amount * 0.95
END
WHEN category = 'Clothing' THEN
CASE
WHEN sales_amount > 500 THEN sales_amount * 0.85
ELSE sales_amount * 0.90
END
ELSE sales_amount
END) AS total_sales_with_discounts
FROM sales;
Nesta consulta, se a category
for ‘Electronics’, diferentes taxas de desconto são aplicadas com base no valor das vendas, e se a category
for ‘Clothing’, diferentes taxas de desconto são aplicadas de forma semelhante. Se as condições não forem atendidas, o valor original das vendas é somado. Desta forma, o total considerando condições complexas é calculado.
Exemplos de Aplicação Prática
Vamos mostrar exemplos de aplicação prática em cenários reais de negócios, introduzindo usos práticos da declaração CASE e da função SUM. Isso ajudará você a entender métodos específicos úteis para tarefas diárias de agregação de dados.
Exemplo 1: Calculando Totais Mensais de Vendas
Se você quiser agregar dados de vendas de uma empresa por mês e calcular os totais mensais de vendas, pode usar a seguinte consulta:
SELECT
MONTH(sale_date) AS sale_month,
SUM(sales_amount) AS monthly_sales
FROM sales
GROUP BY MONTH(sale_date)
ORDER BY sale_month;
Nesta consulta, o mês é extraído de sale_date
, e o valor das vendas para cada mês é somado. O resultado é exibido como totais mensais de vendas.
Exemplo 2: Calculando Vendas e Taxa de Realização por Departamento
Se você quiser calcular as vendas e a taxa de realização para cada departamento de uma empresa, pode usar a seguinte consulta:
SELECT
department,
SUM(sales_amount) AS total_sales,
SUM(sales_amount) / SUM(sales_target) * 100 AS achievement_rate
FROM sales
GROUP BY department;
Nesta consulta, o total de vendas e as metas de vendas para cada departamento são calculados, e a taxa de realização (porcentagem de vendas totais em relação às metas de vendas) é determinada.
Exemplo 3: Calculando Valor Total de Compras e Valor com Desconto por Cliente
Se você quiser calcular o valor total de compras e o valor total de compras com desconto para cada cliente, pode usar a seguinte consulta:
SELECT
customer_id,
SUM(sales_amount) AS total_purchase,
SUM(CASE
WHEN discount_applied = 'Yes' THEN sales_amount
ELSE 0
END) AS discounted_purchase
FROM sales
GROUP BY customer_id;
Nesta consulta, o valor total de compras e o valor total de compras com desconto para cada cliente são calculados. Isso permite uma análise detalhada do comportamento de compra de cada cliente.
Exemplo 4: Calculando o Status Total de Inventário e Valor de Vendas de Produtos
Se você quiser combinar dados de inventário e dados de vendas para calcular o status de inventário e o valor total de vendas de produtos, pode usar a seguinte consulta:
SELECT
p.product_id,
p.product_name,
p.stock_quantity,
SUM(s.sales_amount) AS total_sold
FROM products p
LEFT JOIN sales s ON p.product_id = s.product_id
GROUP BY p.product_id, p.product_name, p.stock_quantity;
Nesta consulta, a tabela products
é unida à tabela sales
para calcular a quantidade em estoque e o valor total de vendas para cada produto. Desta forma, tanto a gestão de inventário quanto o desempenho de vendas podem ser entendidos simultaneamente.
Compreendendo exemplos de aplicação prática como estes, você pode dominar os usos práticos da declaração CASE e da função SUM e aplicá-los em cenários de negócios reais para adquirir habilidades úteis.
Conclusão
Explicamos como calcular totais condicionais de forma flexível combinando a declaração CASE do SQL e a função SUM. Desde o uso básico até exemplos específicos de consultas, métodos para calcular totais usando múltiplas condições e exemplos de aplicação prática, cobrimos uma ampla gama.
Usando a declaração CASE, você pode retornar valores dinamicamente com base em condições específicas e somar os resultados com a função SUM. Isso torna fácil a agregação e análise de dados complexos.
Em cenários de negócios reais, você pode aplicar essas técnicas em várias situações, como calcular totais mensais de vendas, taxas de realização de vendas por departamento, valores totais de compras e valores com desconto para cada cliente, e status de inventário e valor total de vendas de produtos.
Utilize o SQL para realizar uma análise de dados eficiente, agilizar operações e acelerar a tomada de decisões. Dominando a técnica de calcular totais condicionais, as operações de agregação de banco de dados se tornam mais poderosas e convenientes.