Com pertinência à linguagem SQL, julgue o item abaixo.Consid...
Com pertinência à linguagem SQL, julgue o item abaixo.
Considere-se o seguinte script SQL.
select report_code, year, month, day,
wind_speed,
case
when wind_speed>= 40 then ‘HIGH’
when wind_speed>= 30 then ‘MODERATE’
else ‘LOW’
end as wind_severity
from station_data
O resultado da execução do script resultará em erro, pois,
caso haja, na tabela station_data, algum registro no
campo wind_speed com valor superior a 40, não será
possível predizer se o valor da variável wind_severity
será igual a ‘HIGH’.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: E - errado
Tema Central: A questão aborda a utilização da cláusula CASE
em uma consulta SQL. Essa cláusula é utilizada para criar condições que retornam valores específicos com base em determinados critérios.
Para resolver essa questão, é necessário entender como a lógica condicional funciona no SQL, especialmente na cláusula CASE
. Nesse contexto, o script está sendo utilizado para classificar a severidade do vento com base na velocidade do vento (wind_speed
).
Explicação Detalhada da Alternativa Correta (E - Errado):
O enunciado sugere que o script resultaria em erro se houvesse valores de wind_speed
superiores a 40 porque não seria possível prever o valor de wind_severity
como 'HIGH'. No entanto, isso é um equívoco. O uso da cláusula CASE
, conforme exibido no script, é perfeitamente válido.
A lógica do CASE
no SQL funciona da seguinte forma:
- when wind_speed >= 40 then ‘HIGH’: Se a velocidade do vento for maior ou igual a 40,
wind_severity
será 'HIGH'. - when wind_speed >= 30 then ‘MODERATE’: Se a velocidade do vento for maior ou igual a 30, mas menor que 40,
wind_severity
será 'MODERATE'. - else ‘LOW’: Se a velocidade do vento for menor que 30,
wind_severity
será 'LOW'.
É importante ressaltar que o script não gera erro e a lógica é clara: o primeiro when
que for verdadeiro é aplicado, e as condições são verificadas em ordem. Portanto, qualquer valor acima de 40 será classificado corretamente como 'HIGH'.
Por que a Alternativa C (certo) está Incorreta:
A alternativa C está incorreta porque a premissa do enunciado é falha. A ideia de que o script resultaria em erro está errada, já que a cláusula CASE
é implementada corretamente e não gera ambiguidade quanto à classificação dos valores de wind_speed
.
Conclusão:
A lógica usada no script SQL é correta e não resultará em erro. A tabela station_data
poderá ter registros com wind_speed
superiores a 40, e isso será devidamente categorizado como 'HIGH'.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
qualquer valor igual ou superior a 40 será respondido como 'HIGH', e os valores entre 30 e 39 serão 'MODERATE'. Portanto não haverá erro...!
O que aparece no resultado da consulta é o primeiro CASE a ser satisfeito.
Errado. O script apresentado não resultará em erro, pois a cláusula "CASE" é usada para definir condições e valores de retorno que são aplicados à coluna "wind_speed". Se houver um registro na tabela "station_data" com um valor de "wind_speed" superior a 40, ele será classificado como "HIGH".
Na cláusula "CASE", as condições são testadas na ordem em que são escritas. Se uma condição é atendida, o valor de retorno associado é retornado e o resto das condições é ignorado. No caso apresentado, se o valor de "wind_speed" for igual ou maior que 40, o resultado será "HIGH", caso contrário, se o valor de "wind_speed" for igual ou maior que 30, o resultado será "MODERATE". Caso nenhuma dessas condições seja atendida, o resultado será "LOW".
Resposta: Errado.
O script não dá erro porque a cláusula "CASE" define condições e valores para a coluna "wind_speed".
Se tiver um registro com "wind_speed" maior que 40, será "HIGH".
- Cláusula "CASE" aplica condições e valores à coluna "wind_speed".
- Condições são testadas na ordem escrita.
- Se "wind_speed" >= 40, resultado é "HIGH".
- Se não, se "wind_speed" >= 30, resultado é "MODERATE".
- Se não, resultado é "LOW".
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo