Com o objetivo de corrigir erros e efetuar melhorias, um en...
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
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