Com o objetivo de corrigir erros e efetuar melhorias, um en...

Próximas questões
Com base no mesmo assunto
Q1622529 Banco de Dados
Com o objetivo de corrigir erros e efetuar melhorias, um engenheiro de dados foi contratado para analisar determinados comandos SQL presentes no sistema de uma empresa. Ao analisar corretamente a seguinte consulta SQL, o engenheiro concluirá que
Empregado id_empregado nome id_departamento salario

SELECT '1', id_departamento, id_empregado, salario FROM empregado WHERE id_departamento='3' UNION SELECT '2', 'TOTAL ', 'SALARIO', SUM(salario) FROM empregado WHERE id_departamento='3' ORDER BY 1,2,3
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - a consulta não apresenta erros de sintaxe.

Para compreender a alternativa correta, é necessário ter conhecimento sobre a sintaxe do SQL e a operação UNION. O UNION é utilizado para combinar o resultado de duas ou mais consultas SELECT em um único conjunto de resultados. As principais regras para o uso do UNION incluem a necessidade de que as consultas combinadas tenham o mesmo número de colunas nas listas de seleção e que as colunas correspondentes tenham tipos de dados compatíveis.

A consulta apresentada faz uso do UNION para juntar os resultados de dois SELECT. O primeiro SELECT retorna resultados da tabela empregado onde id_departamento é igual a '3', incluindo uma coluna literal com o valor '1'. O segundo SELECT retorna uma linha única com a soma dos salários dos empregados do departamento '3', e as colunas literais '2', 'TOTAL' e 'SALARIO' como marcadores de lugar para alinhamento das colunas.

A ordenação da consulta, expressa pelo comando ORDER BY, especifica a ordem das colunas pelo seu número na lista de seleção, que é uma prática válida e não resulta em erro de sintaxe.

A justificativa para a alternativa correta é que, apesar da consulta usar literais e operações de agregação, tudo é feito seguindo as regras do SQL. O número de colunas é o mesmo em ambas as partes do UNION, e os tipos de dados são compatíveis para a operação. Além disso, o uso de literais em consultas SELECT é permitido e o comando ORDER BY está corretamente referenciando os números das colunas. Portanto, a consulta é sintaticamente correta.

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

Assertiva E

a consulta não apresenta erros de sintaxe.

SELECT '1', id_departamento, id_empregado, salario FROM empregado WHERE id_departamento='3' UNION SELECT '2', 'TOTAL ', 'SALARIO', SUM(salario) FROM empregado WHERE id_departamento='3' ORDER BY 1,2,3

GABARITO: LETRA E

essas bancas curtem demais UNION e UNION ALL

O que são esses termos entre aspas? Qual coluna será a coluna '1'?

De sintaxe não. Mas se id_departamento não for char, vai dar incompatibilidade na hora que rodar, dependendo do banco.

Clique para visualizar este comentário

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