Se você já trabalhou com bancos de dados, provavelmente notou que os dados raramente são perfeitos e muitas vezes exigem manipulação para extrair insights significativos.
Para atender a essa necessidade, o SQL oferece uma construção poderosa, chamada de instrução CASE, que permite que você crie novas colunas ou transforme dados com base nas condições aplicadas às colunas existentes.
Neste artigo, explicaremos o que é uma declaração CASE, por que ela é essencial e exploraremos vários casos de uso para ajudar você a aproveitar seu potencial. Vamos começar!
O que é uma declaração CASE?
A instrução Case no SQL é uma expressão condicional que introduz uma lógica de tomada de decisão em sua consulta. Ele funciona de forma semelhante a uma instrução declaração if-elif-else em Pythonpermitindo que você avalie várias condições e retorne resultados específicos com base nessas condições.
A sintaxe geral é a seguinte:
CASEWHEN boolean_condition1 THEN result1
WHEN boolean_condition2 THEN result2
ELSE result3
ENDTecnologia
Veja como isso funciona:
A palavra-chave CASE marca o início da expressão, enquanto END marca sua conclusão, encerrando a declaração condicional como um quadro.
Cada cláusula WHEN avalia uma condição. Se a condição for verdadeira, a cláusula THEN correspondente retornará um resultado especificado.
Se nenhuma dessas condições nas cláusulas WHEN for atendida, a cláusula ELSE fornecerá um resultado padrão.
Por que a declaração CASE é importante?
A instrução CASE WHEN é uma ferramenta valiosa nas consultas SQL, oferecendo vários benefícios importantes:
Transformação de dadosTransformação de dados: permite que você crie novas colunas com base nos valores das colunas existentes.
Agregação condicionalPermite que você crie valores agregados (por exemplo, somas, contagens, máximos) para subconjuntos específicos de dados com base em condições.
Filtragem de dadosVocê pode incluir ou excluir linhas com base em critérios específicos.
Simplificação de consultas e legibilidade: Ele ajuda a consolidar a lógica em uma única consulta, reduzindo a necessidade de várias consultas, tabelas temporárias ou uniões complexas.
Otimização do desempenhoSe você quiser otimizar o desempenho de suas consultas SQL, a instrução CASE também pode contribuir para otimizar o desempenho e minimizar o tempo de execução, especialmente quando evita a necessidade de cálculos e transformações adicionais.
Declaração CASE simples
Neste artigo, usaremos a tabela film do banco de dados cinema. Vamos supor que você queira criar uma nova coluna categórica com base nos valores de ROI (relação entre bruto e orçamento):
SELECT
title,
gross,
budget,
gross / budget AS ROI,CASEWHEN gross / budget <1THEN'low ROI'WHEN gross / budget BETWEEN1AND2THEN'medium ROI'ELSE'high ROI'ENDas ROI_group
FROM cinema.films
WHERE budget >0AND gross >0AND release_year =2015;Tecnologia
Considerando o valor bruto e o orçamento, calculamos o ROI, que é uma métrica de lucratividade popular que mede a receita gerada por um investimento.
Além do campo ROI, também obtivemos sua categorização para nos comunicarmos melhor:
Se os filmes com ROI forem menores que 1, o valor será "ROI baixo"
Os filmes com ROI entre 1 e 2 pertencem à categoria "ROI médio"
"ROI alto" é o rótulo atribuído aos filmes com um ROI maior ou igual a 2.
Também filtramos os filmes com orçamentos ou valores brutos zero ou negativos. Além disso, restringimos os resultados aos filmes lançados em 2015.
Uso do CASE na cláusula Group By
No primeiro exemplo, criamos um novo campo, que pode ser aplicado para agregar os dados e obter insights adicionais.
Por exemplo, podemos calcular a média bruta e o orçamento médio para cada grupo de ROI:
Para agrupar os dados, basta colocar a instrução case na cláusula GROUP BY. Para obter insights adicionais, ordenamos as linhas em ordem decrescente com base no valor bruto médio. Dessa forma, você pode identificar que a média bruta mais alta é atribuída ao ROI alto e vice-versa para o ROI baixo.
Uso do CASE na cláusula WHERE
Outro benefício da instrução CASE é que ela permite filtrar as linhas com base em condições específicas. Por exemplo, podemos aplicar diferentes limites de ROI com base no idioma do filme. Sabe-se que os filmes ingleses têm um ROI consistentemente alto. Portanto, o limite deve ter um valor mais alto, enquanto supomos que os outros idiomas tenham um ROI mais baixo.
SELECT
title,
gross,
budget,language,
gross / budget AS ROI
FROM cinema.films
WHERECASEWHENlanguage='English'THEN gross / budget >2-- English films need ROI > 2WHENlanguage='French'THEN gross / budget >1.5-- French films need ROI > 1.5ELSE gross / budget >1.3-- Default for other languagesEND;Tecnologia
Cálculo de agregações
Também podemos nos interessar em calcular o número de filmes com alto ROI versus baixo ROI lançados em 2015:
Dentro da função SUM, é como se criássemos um novo campo com valor 1 quando o ROI atinge esse limite e 0 caso contrário. Se considerarmos a soma dessa nova variável binária, obteremos o número de filmes que respeitam esse critério.
A partir do resultado, podemos observar que a maioria dos filmes tem um ROI inferior a 1, enquanto poucos filmes são altamente lucrativos.
Declaração de caso aninhada
Um dos casos de uso mais avançados é a instrução de caso aninhado, que é um caso dentro de um caso. É muito útil quando você precisa dividir os dados em subgrupos e aplicar uma lógica diferente para cada subgrupo.
Da mesma forma que no primeiro exemplo, queremos criar uma nova coluna que deve ser influenciada pelos valores de ROI. Como dissemos anteriormente, o ROI dos filmes em inglês é alto globalmente em comparação com os filmes em outros idiomas.
Por esse motivo, seria melhor categorizar os filmes em grupos de ROI, considerando tanto o ROI quanto o idioma
Na consulta, a instrução CASE externa é usada para avaliar se o idioma é inglês ou não. Dependendo do idioma, o CASE interno avalia a ROI: os limites são mais altos para filmes em inglês e mais baixos para filmes que não sejam em inglês. Essa condição de vários níveis permite melhorar a separação de filmes com baixo, médio e alto teor de ferro.
Conclusão
A instrução CASE é uma construção SQL indispensável para que você possa extrair insights significativos dos seus dados. A teoria é alternada com exemplos práticos para ajudar você a compreender profundamente essa poderosa expressão condicional. Se você quiser se aprofundar mais, dê uma olhada no manipulação de dados no curso SQL. Ele aborda a instrução CASE, bem como outros aspectos importantes do SQL, como subconsultas e funções de janela. Por fim, você deve verificar o Fundamentos de SQL para que você tenha uma visão geral dos cursos que ajudam a dominar o SQL.
Saiba como usar DECODE() no Oracle para lógica condicional na transformação de dados. Compare DECODE() com a instrução CASE WHEN em termos de desempenho e comportamento.
Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
Explore como o uso de um alias SQL simplifica os nomes de colunas e tabelas. Saiba por que usar um alias SQL é fundamental para melhorar a legibilidade e gerenciar uniões complexas.
Domine os fundamentos do SQL necessários para os negócios, aprenda a escrever consultas SQL e comece a analisar seus dados usando essa linguagem poderosa.
Se você já trabalhou com bancos de dados, provavelmente notou que os dados raramente são perfeitos e muitas vezes exigem manipulação para extrair insights significativos.
Para atender a essa necessidade, o SQL oferece uma construção poderosa, chamada de instrução CASE, que permite que você crie novas colunas ou transforme dados com base nas condições aplicadas às colunas existentes.
Neste artigo, explicaremos o que é uma declaração CASE, por que ela é essencial e exploraremos vários casos de uso para ajudar você a aproveitar seu potencial. Vamos começar!
O que é uma declaração CASE?
A instrução Case no SQL é uma expressão condicional que introduz uma lógica de tomada de decisão em sua consulta. Ele funciona de forma semelhante a uma instrução declaração if-elif-else em Pythonpermitindo que você avalie várias condições e retorne resultados específicos com base nessas condições.
A sintaxe geral é a seguinte:
Veja como isso funciona:
Por que a declaração CASE é importante?
A instrução CASE WHEN é uma ferramenta valiosa nas consultas SQL, oferecendo vários benefícios importantes:
Declaração CASE simples
Neste artigo, usaremos a tabela
filmdo banco de dadoscinema. Vamos supor que você queira criar uma nova coluna categórica com base nos valores de ROI (relação entre bruto e orçamento):Considerando o valor bruto e o orçamento, calculamos o ROI, que é uma métrica de lucratividade popular que mede a receita gerada por um investimento.
Além do campo ROI, também obtivemos sua categorização para nos comunicarmos melhor:
Também filtramos os filmes com orçamentos ou valores brutos zero ou negativos. Além disso, restringimos os resultados aos filmes lançados em 2015.
Uso do CASE na cláusula Group By
No primeiro exemplo, criamos um novo campo, que pode ser aplicado para agregar os dados e obter insights adicionais.
Por exemplo, podemos calcular a média bruta e o orçamento médio para cada grupo de ROI:
Para agrupar os dados, basta colocar a instrução case na cláusula GROUP BY. Para obter insights adicionais, ordenamos as linhas em ordem decrescente com base no valor bruto médio. Dessa forma, você pode identificar que a média bruta mais alta é atribuída ao ROI alto e vice-versa para o ROI baixo.
Uso do CASE na cláusula WHERE
Outro benefício da instrução CASE é que ela permite filtrar as linhas com base em condições específicas. Por exemplo, podemos aplicar diferentes limites de ROI com base no idioma do filme. Sabe-se que os filmes ingleses têm um ROI consistentemente alto. Portanto, o limite deve ter um valor mais alto, enquanto supomos que os outros idiomas tenham um ROI mais baixo.
Cálculo de agregações
Também podemos nos interessar em calcular o número de filmes com alto ROI versus baixo ROI lançados em 2015:
Dentro da função SUM, é como se criássemos um novo campo com valor 1 quando o ROI atinge esse limite e 0 caso contrário. Se considerarmos a soma dessa nova variável binária, obteremos o número de filmes que respeitam esse critério.
A partir do resultado, podemos observar que a maioria dos filmes tem um ROI inferior a 1, enquanto poucos filmes são altamente lucrativos.
Declaração de caso aninhada
Um dos casos de uso mais avançados é a instrução de caso aninhado, que é um caso dentro de um caso. É muito útil quando você precisa dividir os dados em subgrupos e aplicar uma lógica diferente para cada subgrupo.
Da mesma forma que no primeiro exemplo, queremos criar uma nova coluna que deve ser influenciada pelos valores de ROI. Como dissemos anteriormente, o ROI dos filmes em inglês é alto globalmente em comparação com os filmes em outros idiomas.
Por esse motivo, seria melhor categorizar os filmes em grupos de ROI, considerando tanto o ROI quanto o idioma
Na consulta, a instrução CASE externa é usada para avaliar se o idioma é inglês ou não. Dependendo do idioma, o CASE interno avalia a ROI: os limites são mais altos para filmes em inglês e mais baixos para filmes que não sejam em inglês. Essa condição de vários níveis permite melhorar a separação de filmes com baixo, médio e alto teor de ferro.
Conclusão
A instrução CASE é uma construção SQL indispensável para que você possa extrair insights significativos dos seus dados. A teoria é alternada com exemplos práticos para ajudar você a compreender profundamente essa poderosa expressão condicional. Se você quiser se aprofundar mais, dê uma olhada no manipulação de dados no curso SQL. Ele aborda a instrução CASE, bem como outros aspectos importantes do SQL, como subconsultas e funções de janela. Por fim, você deve verificar o Fundamentos de SQL para que você tenha uma visão geral dos cursos que ajudam a dominar o SQL.