Questão FC372797
Para responder a questão, considere as instruções a seguir. Considere a existência das tabelas abaixo. Tabela departamento: idDep VARCHAR(10) primary key nomeDep VARCHAR(70) telefo
Linguagem SQL
FCC · 2023
Para responder a questão, considere as instruções a seguir.
Considere a existência das tabelas abaixo.
Tabela departamento: idDep VARCHAR(10) primary key nomeDep VARCHAR(70) telefoneDep VARCHAR(15)
Tabela funcionario emailFun VARCHAR(45) primary key nome Fun VARCHAR (70) telefoneFun VARCHAR(15) cargoFun VARCHAR(45) salarioFun DOUBLE idDep VARCHAR(10) foreign key
Tabela usuario: emailFun VARCHAR(45) primary key e foreign key senhausu VARCHAR(50)
A relação de departamento para funcionario é 1:n e de funcionario para usuario, 1:1.
No MySQL, com o banco de dados aberto e em condições ideais, para contar quantos funcionários pertencem ao departamento com idDep igual a 'Dep1' e para listar os nomes desses funcionários em ordem alfabética ascendente, separados por virgulas, utiliza-se o comando
- SELECT COUNT (F.emailFun) AS Quantidade_Funcionarios, CONCAT (F.nomeFun ORDER BY F. nome Fun ASC SEPARATOR', ') AS Nomes_Funcionarios FROM funcionario F INNER JOIN departamento D ON F.idDep D.idDep;
- SELECT COUNT(F. emailFun) AS Quantidade_Funcionarios, GROUP_CONCAT (F. nome Fun ORDER BY F.nomeFun ASC SEPARATOR',') AS Nomes_Funcionarios FROM funcionario F INNER JOIN departamento D ON F.idDep D.idDep WHERE D.idDep = 'Dep1';
- SELECT COUNT (F. emailFun) AS Quantidade_Funcionarios, GROUP_CONCAT (F. nome Fun ORDER BY F.nome Fun ASC SEPARATOR', ') AS Nomes Funcionarios FROM funcionario F INNER JOIN departamento D ON F.idFun D. idDep WHERE D.idDep= 'Dep1';
- SELECT COUNT (F. emailFun) AS Quantidade_Funcionarios, CONCAT (F.nomeFun ORDER BY F. nome Fun ASC SEPARATOR, ') AS Nomes_Funcionarios FROM funcionario F WHERE D. idDep 'Dep1';
- SELECT COUNT(F.emailFun) AS Quantidade_Funcionarios, CONCAT(F.nomeFun ORDER BY F.nomeFun ASC, SEPARATOR, AS Nomes Funcionarios FROM funcionario F INNER JOIN departamento D ON F.idDep D.idDep WHERE D.idDep= 'Dep1';
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A consulta apresentada usa corretamente as cláusulas e funções do MySQL para devolver uma única linha com a quantidade e os nomes dos funcionários do departamento Dep1.
SELECT agrega duas expressões: COUNT(F.emailFun) AS Quantidade_Funcionarios conta os registros (usar emailFun é seguro porque é chave primária, logo não nulo) e GROUP_CONCAT(...) AS Nomes_Funcionarios concatena os nomes em uma única string.
O INNER JOIN entre funcionario F e departamento D faz a ligação pelo campo idDep, garantindo que só sejam considerados funcionários daquele departamento. A cláusula WHERE D.idDep = 'Dep1' filtra o departamento desejado.
Dentro de GROUP_CONCAT usa-se ORDER BY F.nomeFun ASC para ordenar alfabeticamente e SEPARATOR ',' para separar por vírgulas. Como só há agregações, não é necessário GROUP BY, retornando uma única linha com os resultados.
Conteúdo do catálogo FC Concursos · Atualizado em