Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CEPS-UFPA 2022

Banco de DadosSQL
Código
gp036566
Banca
CEPS-UFPA
Órgão
UFPA
Ano
2022
Cargo
CEPS - - Analista de Tecnologia da Informação / Área: Governança de TI
Considere o objetivo de se desenvolver um programa que produz um relatório de administração deserviços de tecnologia da informação de uma empresa contendo um gráfico como o apresentado aseguir (com dados fictícios). Em cada fatia da ‘pizza’, são apresentadas as áreas de negócio daempresa e a quantidade de serviços vinculados. Imagem associada para resolução da questão Deve-se supor a existência do esquema de banco de dados composto pelas tabelas a seguir. DROP TABLE IF EXISTS SERVICO; CREATE TABLE SERVICO ( servico_id integer NOT NULL, nome text, tipo_id integer, PRIMARY KEY (servico_id), FOREIGN KEY (tipo_id) REFERENCES TIPOSERVICO(tipo_id)); DROP TABLE IF EXISTS TIPOSERVICO; CREATE TABLE TIPOSERVICO ( tipo_id integer NOT NULL, nome text, area_id integer, PRIMARY KEY (tipo_id), FOREIGN KEY (area_id) REFERENCES AREANEGOCIO(area_id)); DROP TABLE IF EXISTS AREANEGOCIO; CREATE TABLE AREANEGOCIO ( area_id integer NOT NULL, nome text, PRIMARY KEY(area_id)); Com base no esquema de banco de dados fornecido, a consulta SQL que apresenta como resultadoos dados necessários para a produção do gráfico apresentado é
  1. ASELECT SERVICO.servico_id, SERVICO.nome FROM SERVICO,TIPOSERVICO, AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.tipo_id = TIPOSERVICO.tipo_id;
  2. BSELECT AREANEGOCIO.nome, 1000*COUNT(DISTINCT SERVICO.servico_id)/ (SELECT COUNT(DISTINCT SERVICO.servico_id) FROM SERVICO,TIPOSERVICO,AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.servico_id = TIPOSERVICO.tipo_id) AS SERVICOS_AREA FROM SERVICO,TIPOSERVICO,AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.tipo_id = TIPOSERVICO.tipo_id GROUP BY SERVICO.nome;
  3. CSELECT AREANEGOCIO.nome, COUNT(DISTINCT SERVICO. servico_id) AS QtdeServicos FROM SERVICO,TIPOSERVICO,AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.servico_id = TIPOSERVICO.tipo_id GROUP BY AREANEGOCIO.nome;
  4. DSELECT AREANEGOCIO.nome, COUNT(DISTINCT SERVICO.SERVICO_ID) AS TotalServico FROM SERVICO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.tipo_id = TIPOSERVICO.tipo_id GROUP BY AREANEGOCIO.nome;
  5. ESELECT SERVICO.servico_id, 100*COUNT(DISTINCT SERVICO.servico_id)/ (SELECT COUNT(DISTINCT SERVICO.servico_id) FROM SERVICO,TIPOSERVICO,AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.servico_id = TIPOSERVICO.tipo_id) AS SERVICOS_AREA FROM SERVICO,TIPOSERVICO, AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.tipo_id TIPOSERVICO.tipo_id;
Revelar gabarito e comentário

GabaritoC — SELECT AREANEGOCIO.nome, COUNT(DISTINCT SERVICO. servico_id) AS QtdeServicos FROM SERVICO,TIPOSERVICO,AREANEGOCIO WHERE TIPOSERVICO.area_id = AREANEGOCIO.area_id AND SERVICO.servico_id = TIPOSERVICO.tipo_id GROUP BY AREANEGOCIO.nome;

Link permanente: /questoes/gp036566