Considere a seguinte tabela de um banco de dados relacional:...
Item (ID, Nome, Tipo, EstoqueMínimo) A consulta SQL para obter o Nome e o Tipo dos itens, ape- nas para aqueles cujo valor do EstoqueMínimo seja superior a 20, é:
SELECT Nome, Tipo
FROM Item
Cláusula
O valor da Cláusula para atender à consulta acima especificada é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - WHERE EstoqueMínimo > 20
A questão proposta requer um entendimento prático das operações da Structured Query Language (SQL), que é a linguagem padrão para interação com bancos de dados relacionais. Mais especificamente, o foco está no uso da cláusula WHERE, que é utilizada para especificar condições de filtragem das linhas retornadas por uma consulta SQL.
O objetivo da consulta SQL apresentada na questão é retornar o Nome e o Tipo dos itens onde a coluna EstoqueMínimo tem valor superior a 20. Para isso, a cláusula WHERE é a escolha correta, pois permite especificar essa condição de filtragem de forma direta e eficaz.
A cláusula HAVING, presente nas alternativas A e B, é utilizada de maneira errônea neste contexto, pois HAVING é empregada para filtrar dados que foram agrupados, frequentemente em combinação com funções de agregação, como SUM, AVG, COUNT, etc., o que não se aplica ao caso em questão.
A opção C com a cláusula WHERE usando IN é incorreta pois a condição "IN (20)" seria utilizada para verificar se o valor de EstoqueMínimo está dentro de um conjunto de valores, e neste caso, o conjunto possui um único valor, 20, o que não corresponde à condição de ser superior a 20.
A alternativa D é inválida porque a sintaxe utilizada é incorreta. A comparação com um par de valores utilizando parênteses desta forma não é uma prática válida em SQL.
Portanto, a alternativa E é a correta, pois a cláusula WHERE EstoqueMínimo > 20 filtra corretamente todos os registros onde o valor da coluna EstoqueMínimo é estritamente maior que 20, atendendo ao requisito da consulta solicitada na questão.
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
Questão passível de recurso, pois o HAVING, quando não utilizado com o Group By, tem a mesma função do Where. Nesse caso, tanto o WHERE quanto o HAVING traria o resultado requerido. Questão do gabarito é a E, porém a A está correta também. Nesse caso, a mais certa seria a E.
"Sempre duvide da alternativa A"
e-
In SQL, the HAVING clause is used to filter the results of a GROUP BY query based on a specified condition. It is typically used in conjunction with aggregate functions like SUM, COUNT, AVG, MAX, or MIN to filter groups of rows that meet certain criteria. Here's a basic explanation of when to use the HAVING clause:
After Using GROUP BY: You should use HAVING after applying the GROUP BY clause. The GROUP BY clause is used to group rows with the same values in one or more columns into summary rows. The HAVING clause then filters those summary rows.
Aggregating Data: HAVING is used when you want to filter groups of rows based on aggregate calculations (e.g., the sum, average, or count of values within each group). You cannot use WHERE to filter on these aggregate calculations because WHERE filters individual rows, whereas HAVING filters groups.
Conditions on Aggregates: You use HAVING to specify conditions on the result of an aggregate function. For example, if you want to retrieve groups where the total sales are greater than a certain value, you would use HAVING SUM(sales) > 1000.
e.g.:
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo