Analise o comando SQL mostrado a seguir juntamente com a in...

Próximas questões
Com base no mesmo assunto
Q738855 Banco de Dados

Analise o comando SQL mostrado a seguir juntamente com a instância da tabela C. 

select case when a<b then a else b end,

           count(*) x from C group by case when a<b then a else b end
 a    b    12  14 12  14 14  12  14  12
Assinale a opção que apresenta o número de linhas do resultado produzido pela execução desse comando.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - 1

Para compreender a questão, é necessário conhecer o funcionamento da cláusula CASE no SQL e como o agrupamento de dados (GROUP BY) opera juntamente com funções de agregação, como o COUNT().

O comando CASE é uma expressão condicional que retorna valores baseados em condições específicas. Neste caso, a condição é a < b. Se essa condição for verdadeira, o CASE retorna o valor de a; caso contrário, retorna o valor de b. Isso é usado tanto na lista de seleção quanto na cláusula GROUP BY do comando SQL em questão.

Em seguida, o comando GROUP BY agrupa os resultados baseados no valor retornado pelo CASE. Como temos dois pares de valores (12 e 14; 14 e 12) que se alternam, o CASE sempre retornará 12, pois quando a é maior ou igual a b, b (que é 12) é retornado.

Portanto, todas as linhas da tabela serão agrupadas em um único grupo, já que o CASE retorna o mesmo valor para todas as entradas. A função COUNT(*) então conta o número total de linhas no grupo, resultando em uma contagem total de 4, mas como estamos agrupando pela mesma expressão CASE, isso resultará em uma única linha de saída.

A contagem de linhas reflete o número de grupos distintos formados, não o número total de linhas na tabela. Assim, a resposta correta é a Alternativa B, pois haverá 1 linha no resultado final, representando um único grupo contendo todas as 4 linhas da tabela original.

Essa questão avalia a habilidade de entender como as expressões condicionais e as funções de agregação atuam em conjunto no processo de agrupamento de dados em consultas SQL. Ao praticar esse tipo de questão, você desenvolve a capacidade de analisar e prever os resultados de querys complexas que envolvem múltiplas operações SQL.

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

fiddle da questão:

http://sqlfiddle.com/#!4/ebb1b/1/0

Se 12 < 14, seleciona o 12 (col a)

Se 14 >= 12, seleciona o 12 (col b)

Sempre retorna o 12 por isso agrupa tudo em uma linha.

Eu quis fazer a questão com pressa e acabei indo c)

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo