Analise a operação a seguir. Π sexo, salario (o-DNR = 5 ...
Π sexo, salario (o-DNR = 5 (FUNCIONÁRIO) )
Em álgebra relacionai, considerando π como a operação de PROJEÇÃO e δ como a operação de SELEÇÃO, assinale a opção que apresenta a consulta SQL referente à operação acima.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A.
Para entender completamente essa questão, é importante ter um bom conhecimento sobre a álgebra relacional e suas operações, como projeção e seleção, além de saber como essas operações são traduzidas para consultas SQL.
Na álgebra relacional, a operação π (projeção) é usada para selecionar certas colunas de uma tabela, enquanto a operação σ (seleção) é utilizada para selecionar linhas que satisfazem uma condição específica. No enunciado, temos uma seleção seguida de uma projeção.
Vamos agora justificar cada alternativa:
Alternativa A:
SELECT DISTINCT sexo, salario FROM FUNCIONÁRIO WHERE dnr = 5;
Esta é a alternativa correta. A cláusula WHERE
aplica a condição de seleção dnr = 5
, e o SELECT DISTINCT
garante que os resultados não tenham duplicatas, o que corresponde à operação de projeção na álgebra relacional.
Alternativa B:
SELECT sexo, salario FROM FUNCIONÁRIO WHERE dnr = 5;
Embora esta alternativa também selecione as colunas corretas e aplique a condição necessária, ela não usa DISTINCT
. Isso significa que pode haver duplicatas nos resultados, o que não corresponde precisamente à operação de projeção da álgebra relacional, que implica em um conjunto de resultados sem duplicatas.
Alternativa C:
SELECT DISTINCT sexo, salario FROM FUNCIONÁRIO HAVING dnr = 5;
A cláusula HAVING
é usada normalmente com GROUP BY
para filtrar resultados agregados, e não é apropriada para esta consulta. A condição de seleção deveria estar na cláusula WHERE
.
Alternativa D:
SELECT sexo, salario FROM FUNCIONÁRIO HAVING dnr = 5;
Novamente, o uso de HAVING
no lugar de WHERE
está incorreto, pois HAVING
é utilizado para filtrar grupos de resultados, não linhas individuais sem agrupamento.
Alternativa E:
SELECT sexo, salario FROM FUNCIONÁRIO GROUP BY sexo, salario HAVING dnr = 5;
Esta alternativa mistura conceitos de agrupamento que não são necessários aqui. O uso de GROUP BY
e HAVING
não é apropriado porque a questão não envolve agrupamento ou funções agregadas.
Espero que esta explicação tenha ajudado a entender a questão e a escolha da alternativa correta. 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
Álgebra relacional sempre considera como DISTINCT.
O gabarito é a letra A.
Analisando as demais alternativas:
B - Faltou o DISTINCT antes dos campos (necessário por causa da projeção).
C - Incluiu o HAVING sem GROUP BY.
D - Incluiu o HAVING sem GROUP BY.
E - Incluiu salario no GROUP BY e incluiu dnr no HAVING, sem ele ter aparecido no GROUP BY.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo