Suponha que se deseje saber o tipo, a quantidade e o valor m...
Assinale a sequência de comandos que retorna esta tabela.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B
A questão aborda conhecimentos sobre a linguagem SQL para a recuperação e agrupamento de dados em um banco de dados. Para resolver a questão, é necessário saber utilizar a cláusula GROUP BY para agrupar registros por um ou mais campos, e a cláusula HAVING para aplicar uma condição a um grupo de registros após esse agrupamento. Além disso, são utilizadas funções de agregação, tais como COUNT() para contar registros e AVG() para calcular a média de um conjunto de valores.
A alternativa correta utiliza a cláusula GROUP BY para agrupar os vinhos por seu tipo (tipoVinho
) e em seguida aplica a cláusula HAVING para filtrar apenas os grupos que tenham uma contagem de registros maior ou igual a três (COUNT(*) >= 3
). Dessa forma, a consulta retorna o tipo do vinho, a quantidade de vinhos em estoque por tipo e o valor médio dos vinhos para cada agrupamento que satisfaz a condição especificada.
Além disso, a função CAST é utilizada para converter o resultado da média para um valor decimal com uma casa decimal.
O uso correto da cláusula HAVING após a cláusula GROUP BY é o que diferencia a alternativa correta das demais. A alternativa A erra ao tentar utilizar uma condição com WHERE após o GROUP BY, o que é sintaticamente incorreto. A alternativa C utiliza uma sintaxe inexistente com IF que não se aplica ao SQL. A alternativa D tenta utilizar a variável Quantidade diretamente na cláusula HAVING, o que não é possível, pois a cláusula HAVING faz referência a expressões de agregação e não a alias de colunas. A alternativa E também tenta utilizar a cláusula WHERE onde deveria usar HAVING, resultando em um erro sintático.
Portanto, a alternativa B é a correta e está assim formulada:
SELECT tipoVinho AS 'Tipo do Vinho', COUNT(*) AS 'Quantidade', CAST(AVG(precoVinho) AS DECIMAL(5,1)) AS 'Média' FROM vinhos GROUP BY tipoVinho HAVING COUNT(*) >= 3;
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
B e D terão o mesmo resultado!! Caberia recurso...
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo