CASE WHEN SQL: O que é e como usar?

CASE WHEN

O CASE WHEN é uma das funções mais poderosas e versáteis do SQL, permitindo realizar operações avançadas em suas tabelas de dados. Dessa forma, com ele é possível realizar operações de seletagem, atualização, inserção e classificação de acordo com regras específicas definidas pelo usuário.

No entanto, muitas pessoas ainda não entendem bem como o CASE WHEN funciona ou como aplicá-lo em suas próprias aplicações. Nesse sentido, essa função pode ser usado em qualquer banco de dados SQL. Por exemplo, um banco MySQL presente na hospedagem de sites Homehost.

Neste artigo, vamos explorar o que é o CASE WHEN. Além disso, como ele funciona e como utilizá-lo para melhorar a gestão de seus dados.

O que é o CASE WHEN no SQL e como ele funciona?

O CASE WHEN no SQL é uma função condicional que permite definir regras específicas para operações em uma tabela de dados. Assim, usamos quando uma condição específica é verdadeira. O CASE WHEN está composto por três partes: a cláusula “CASE“, a cláusula “WHEN” e a cláusula “THEN“.

Dessa forma, usamos a cláusula “CASE” para iniciar a declaração do CASE WHEN. Assim, a cláusula “WHEN” aplicamos para definirmos as condições que devem estar verdadeiras para que a ação seja executada. E por fim, usamos a cláusula “THEN” para especificarmos a ação que devem estar sendo executada quando a condição é verdadeira.

Sintaxe

A sintaxe do CASE WHEN no SQL é simples e fácil de entender. Assim, está composta por três partes principais: a cláusula “CASE”, a cláusula “WHEN” e a cláusula “THEN”.

Nesse sentido, usamos cláusula “CASE” para iniciar a declaração do CASE WHEN e podemos escrever da seguinte forma:

CASE

Usamos a cláusula “WHEN” para definir as condições que devem ser verdadeiras para que a ação seja executada. Portanto, está escrita da seguinte forma:

WHEN condição

Onde usamos a cláusula “THEN” para especificar a ação que devemos executarmos quando a condição é verdadeira. Assim, está escrita da seguinte forma:

THEN ação

A sintaxe completa do CASE WHEN no SQL podemos escrever da seguinte forma:

CASE condição
WHEN valores_condicionais
THEN ações
ELSE ação_padrão
END

Onde:

  • “condição” refere- se a condição que deve está sendo verdadeira para que a ação seja executada;
  • “valores_condicionais” são os valores condicionais que são avaliados para determinarmos a ação que vai está sendo executada;
  • “ações” são as ações que estarão sendo executadas quando a condição for verdadeira;
  • “ação_padrão” refere-se a ação que vai está sendo executada quando a condição for falsa.

Portanto, vemos flexibilidade e adaptação às necessidades específicas de cada aplicação na sintaxe do CASE WHEN.

Em seguida veremos como podemos aplicar o CASE WHEN para realizar operações de seletagem, atualização, inserção e classificação em uma tabela de dados. Por exemplo, pode-se usar o CASE WHEN para selecionar apenas os registros que atendem a uma certa condição. Ou então, para atualizar o valor de uma coluna com base em outra coluna.

Como usar o CASE WHEN para realizar operações de seletagem em uma tabela?

Também podemos aplicar a função CASE WHEN para realizar operações de seletagem em uma tabela de dados. Assim, precisamos definir uma condição que está verdadeira para um determinado registro. Em seguida, especificar a ação que deve está sendo executada quando essa condição é verdadeira.

Há algumas diferenças entre o CASE WHEN do SQL para o SWITCH CASE do Python.

Por exemplo, supondo que temos uma tabela “vendas” com as seguintes colunas: id, produto, valor e data. Nós podemos usar o CASE WHEN para selecionar apenas os registros em que o valor da coluna “produto” for igual a “computador”. A sintaxe para isso seria a seguinte:

SELECT *
FROM vendas
WHERE CASE WHEN produto = 'computador' THEN 1 ELSE 0 END = 1

Nesse exemplo, estamos usando a cláusula “SELECT” para selecionar todas as colunas da tabela “vendas”. Em seguida, estamos usando a cláusula “WHERE” para selecionar apenas os registros em que o valor da coluna “produto” for igual a “computador”. Assim, utilizamos o CASE WHEN para definirmos a condição “produto = ‘computador'”, e usamos a coluna “1” para indicar que a condição é verdadeira.

Assim, a consulta acima selecionará todos os registros da tabela “vendas” em que o valor da coluna “produto” for igual a “computador”.

É importante notar que o CASE WHEN também usamos para selecionar múltiplas condições e para selecionar campos calculados a partir de outras colunas. A sintaxe é a mesma, a única diferença é a quantidade de “WHEN” que se deseja utilizar.

Como usar o CASE WHEN para realizar operações de atualização em uma tabela?

O CASE WHEN também pode ser aplicado para realizar operações de atualização em uma tabela de dados. Nesse sentido, definimos uma condição que está verdadeira para um determinado registro. Em seguida, especificamos a ação que deve está sendo executada quando essa condição está verdadeira.

Por exemplo, supondo que temos uma tabela “clientes” com as seguintes colunas: id, nome, email e idade. Podemos usar o CASE WHEN para atualizar o valor da coluna “idade”. Apenas para os registros em que o valor da coluna “idade” for menor que 18. A sintaxe para isso seria a seguinte:

UPDATE clientes
SET idade = CASE WHEN idade < 18 THEN 18 ELSE idade END
WHERE idade < 18

Nesse exemplo, estamos usando a cláusula “UPDATE” para atualizar a coluna “idade” da tabela “clientes”. Em seguida, estamos usando a cláusula “SET” para especificarmos que a coluna “idade” deve está sendo atualizada com o valor da coluna “idade” quando está menor que 18. O CASE WHEN é usado para definir a condição “idade < 18”, e a coluna “idade” é usada para especificar o valor que deve ser atualizado.

Assim, a consulta acima atualizará apenas os registros da tabela “clientes”. Somente onde o valor da coluna “idade” for menor que 18. Será atualizando o valor da coluna “idade” para 18.

É importante notar que o CASE WHEN também pode ser utilizado para atualizar múltiplas colunas. Também para atualizar campos calculados a partir de outras colunas. 

Como usar o CASE WHEN para realizar operações de inserção em uma tabela?

Podemos aplicar o CASE WHEN para realizar operações de inserção em uma tabela de dados. Nesse sentido, precisamos definir uma condição que será verdadeira para um determinado registro. E em seguida, especificarmos a ação que estará sendo executada quando essa condição é verdadeira.

Por exemplo, supondo que temos uma tabela “produtos” com as seguintes colunas: id, nome, preco e categoria. Assim, podemos aplicar o CASE WHEN para inserir um novo registro na tabela. Somente se o valor da coluna “categoria” for igual a “eletrônico”. A sintaxe para isso seria a seguinte:

INSERT INTO produtos (nome, preco, categoria)
VALUES ('TV LCD', 1200, CASE WHEN categoria = 'eletrônico' THEN 'eletrônico' ELSE 'outro' END)

Nesse exemplo, estamos usando a cláusula “INSERT INTO” para inserir um novo registro na tabela “produtos”. Em seguida, estamos usando a cláusula “VALUES” para especificar os valores das colunas “nome”, “preco” e “categoria”. Assim, utilizamos o CASE WHEN para definir a condição “categoria = ‘eletrônico’”. Em seguidam, usamos a coluna “eletrônico” para especificar o valor que deve está sendo inserido na coluna “categoria”.

Assim, a consulta acima inserirá um novo registro na tabela “produtos”. Com os valores “TV LCD” para o campo “nome”, “1200” para o campo “preco” e “eletrônico” para o campo “categoria”. Somente se a categoria for igual a “eletrônico”.

Como usar o CASE WHEN para realizar operações de classificação em uma tabela?

Também podemos o CASE WHEN para realizar operações de classificação em uma tabela de dados. Para isso, precisamos definir uma condição que esteja verdadeira para um determinado registro. Em seguida, especificarmos a ação para que esta sendo executada quando essa condição é verdadeira.

Por exemplo, supondo que temos uma tabela “vendas” com as seguintes colunas: id, produto, valor e data. Nós podemos usar o CASE WHEN para classificar os registros da tabela com base no valor da coluna “valor”. A sintaxe para isso seria a seguinte:

SELECT produto, valor,
  CASE WHEN valor > 100 THEN 'Alto'
      WHEN valor > 50 THEN 'Médio'
      ELSE 'Baixo' END AS classificacao
FROM vendas

Nesse exemplo, estamos usando a cláusula “SELECT” para selecionar as colunas “produto”, “valor” e uma nova coluna chamada “classificacao”. Dessa forma, utilizamos O CASE WHEN para definir a condição “valor > 100” e “valor > 50”. E usamos a coluna “classificacao” para especificar a classificação do valor.

Assim, a consulta acima classificará os registros da tabela “vendas” como “Alto” se o valor da coluna “valor” for maior que 100. “Médio” se o valor for maior que 50 e “Baixo” se o valor for igual ou menor que 50.

Comparação entre o CASE WHEN e outras funções de seleção no SQL.

A função CASE em SQL permite criar uma nova coluna com base em uma ou mais condições. Em SQL, existem várias alternativas para a função CASE, incluindo a função IIF, a função IF e a função SWITCH.

Função IIF

A função IIF é semelhante à função CASE, mas é mais fácil de ler e escrever. A sintaxe da função IIF é a seguinte:

IIF(condição, resultado_se_verdadeiro, resultado_se_falso)

Por exemplo, você pode criar uma nova coluna que indica se uma venda está sendo efetuada para um cliente fidelizado ou não. Para isso, você pode usar a função IIF da seguinte maneira:

SELECT
  id,
  nome,
  IIF(fidelizado = 1, 'sim', 'não') como fidelizado
FROM clientes

Função IF

A função IF é semelhante à função CASE, mas é mais simples e não suporta tantas condições. A sintaxe da função IF é a seguinte:

IF(condição, resultado_se_verdadeiro, resultado_se_falso)

Por exemplo, você pode criar uma nova coluna que indica se uma venda está sendo efetuada para um cliente fidelizado ou não. Para isso, você pode usar a função IF da seguinte maneira:

SELECT
  id,
  nome,
  IF(fidelizado = 1, 'sim', 'não') as fidelizado
FROM clientes

Função SWITCH

A função SWITCH é uma nova função no SQL que permite criar uma nova coluna com base em uma ou mais condições. A sintaxe da função SWITCH é a seguinte:

SWITCH(condição
  WHEN valor1 THEN resultado1
  WHEN valor2 THEN resultado2
  ...
  ELSE padrão_default
END

Por exemplo, você pode criar uma nova coluna que indica se uma venda está sendo efetuada para um cliente fidelizado ou não. Para isso, você pode usar a função SWITCH da seguinte maneira:

SWITCH(fidelizado
  WHEN 1 THEN 'sim'
  WHEN 0 THEN 'não'
  ELSE 'desconhecido'
END as fidelizado
FROM vendas

Em resumo, existem várias alternativas para a função CASE WHEN no SQL. Assim, cada uma dessas funções tem suas próprias características e usos específicos. A escolha da função adequada depende do que estamos precisando fazer com os dados.

Exemplos práticos de uso do CASE WHEN

O CASE WHEN é uma cláusula de controle de fluxo de dados que permite criar uma estrutura de escolha em um SQL. Dessa forma, utilizamos para executarmos ações diferentes com base em diferentes condições. Aqui estão alguns exemplos práticos de como usamos o CASE WHEN em diferentes cenários de negócios:

1. Análise de vendas:

Um negócio pode usar o CASE WHEN para analisar as vendas de seus produtos. Por exemplo, um comércio pode usar a seguinte consulta para determinar o produto mais vendido do mês:

SELECT ProductName, SUM(QuantitySold) as TotalSales
FROM Sales
WHERE Month = MONTH(GETDATE()) AND Year = YEAR(GETDATE())
GROUP BY ProductName
ORDER BY TotalSales DESC

2. Classificação de crédito:

As instituições financeiras usam o CASE WHEN para classificar o crédito de seus clientes. Por exemplo, uma instituição financeira pode usar a seguinte consulta para classificar o crédito de um cliente com base em sua histórico de pagamento:

SELECT
    CASE
        WHEN PaymentHistory >= 60 THEN 'A'
        WHEN PaymentHistory >= 30 AND PaymentHistory < 60 THEN 'B'
        WHEN PaymentHistory >= 12 AND PaymentHistory < 30 THEN 'C'
        ELSE 'D'
    END as CreditRating,
    CustomerName
FROM Customers

3. Análise de gastos:

Os negócios podem usar o CASE WHEN para analisar seus gastos e identificar áreas de redução de custos. Por exemplo, uma empresa pode usar a seguinte consulta para determinar os gastos mais altos do mês:

SELECT DepartmentName, SUM(Expenses) as TotalExpenses
FROM Expenses
WHERE Month = MONTH(GETDATE()) AND Year = YEAR(GETDATE())
GROUP BY DepartmentName
ORDER BY TotalExpenses DESC

4. Classificação de produtos:

Um negócio pode usar o CASE WHEN para classificar seus produtos com base em suas características. Por exemplo, um comércio pode usar a seguinte consulta para classificar seus produtos com base em sua categoria:

SELECT
    CASE
        WHEN Category = 'Electronics' THEN 'A'
        WHEN Category = 'Clothing' THEN 'B'
        WHEN Category = 'Home & Garden' THEN 'C'
        ELSE 'D'
    END as ProductCategory,
    ProductName
FROM Products
ORDER BY ProductCategory

Neste exemplo, a cláusula ORDER BY é usada para ordenar os produtos com base na categoria deles. A primeira categoria é Sort A, a segunda é Sort B, e assim por diante.

5. Análise de vendas por categoria:

Um negócio pode usar o CASE WHEN em conjunto com a cláusula GROUP BY para analisar suas vendas por categoria. Por exemplo, um comércio pode usar a seguinte consulta para determinar as vendas totais de cada categoria de produto:

SELECT
    CASE
        WHEN Category = 'Electronics' THEN 'A'
        WHEN Category = 'Clothing' THEN 'B'
        WHEN Category = 'Home & Garden' THEN 'C'
        ELSE 'D'
    END as ProductCategory,
    SUM(QuantitySold) as TotalSales
FROM Sales
GROUP BY ProductCategory
ORDER BY TotalSales DESC

Neste exemplo, a cláusula GROUP BY é usada para agrupar as vendas por categoria de produto. A cláusula ORDER BY é usada para ordenar os resultados com base nas vendas totais em ordem decrescente. A cláusula CASE WHEN é usada para definir a categoria do produto com base em seu nome.

Este artigo foi útil?

Obrigado pela resposta!
Schênia T

Schênia T

Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estatística pela UFPB. Seu hobby é maratonar séries, curtir uma boa música trabalhando ou cozinhando, ir ao cinema e aprender coisas novas!

Contato: schenia.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!