Analise o comando SQL mostrado a seguir juntamente com a in...
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 enda 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.
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