Como Calcular Totais Condicionais Usando a Declaração CASE do SQL e a Função SUM

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.

Índice

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.

Índice