Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESGRANRIO 2019

Banco de DadosSQL
Código
cg016094
Banca
CESGRANRIO
Órgão
UNIRIO
Ano
2019
Nível
Médio
Cargo
Técnico em Tecnologia da Informação
O esquema relacional a seguir define um banco de dados, que contém os resultados das provas de natação dos Jogos Pan-americanos de 2019. Os nomes das tabelas e dos campos são autoexplicativos, permitindo, assim, entender a organização dos dados. As únicas exceções são os campos TEMPO_INDV e TEMPO, presentes na tabela RESULTADO. Eles existem porque em provas de revezamento são registrados os tempos (TEMPO_INDV) de cada um dos 4 membros da equipe e o tempo total (TEMPO) gasto pela equipe para completar a prova. Em provas individuais, o campo TEMPO_INDV recebe o valor nulo (NULL), enquanto o tempo gasto pelo atleta para completar a prova é registrado no campo TEMPO.

CREATE TABLE ATLETA (
 NUMERO NUMBER(5,0) NOT NULL,
 NOME VARCHAR2(50) NOT NULL,
 PAIS CHAR(3) NOT NULL,
 CONSTRAINT ATLETA_PK PRIMARY KEY (NUMERO))

CREATE TABLE PROVA (
 CODIGO CHAR(5) NOT NULL,
 DESCRICAO VARCHAR2(30) NOT NULL,
 CONSTRAINT PROVA_PK PRIMARY KEY (CODIGO))

CREATE TABLE RESULTADO (
 NUM_ATL NUMBER(5,0) NOT NULL,
 COD_PRV CHAR(5) NOT NULL,
 COLOCACAO NUMBER(2,0) NOT NULL,
 TEMPO_INDV VARCHAR2(8),
 TEMPO VARCHAR2(8) NOT NULL,
 CONSTRAINT RESULTADO_PK PRIMARY KEY (NUM_ATL,COD_PRV),
 CONSTRAINT RES_FK1 FOREIGN KEY (NUM_ATL)
 REFERENCES ATLETA (NUMERO),
 CONSTRAINT RES_FK2 FOREIGN KEY (COD_PRV)
 REFERENCES PROVA (CODIGO))
Deseja-se conhecer os nomes dos nadadores brasileiros (PAIS='BRA') que conquistaram medalhas de ouro (COLOCACAO=1), juntamente com a quantidade de medalhas de ouro que cada um conquistou. Os dados devem estar ordenados em ordem decrescente de número de medalhas conquistadas.Qual consulta SQL executa o que foi pedido?
  1. ASELECT A.NOME, COUNT(*)FROM ATLETA A, RESULTADO RWHERE A.NUMERO=R.NUM_ATL AND R.COLOCACAO=1 AND A.PAIS='BRA'GROUP BY A.NUMEROORDER BY COUNT(*) DESC
  2. BSELECT A.NOME, COUNT(*)FROM RESULTADO R, ATLETA AWHERE A.NUMERO=R.NUM_ATL AND R.COLOCACAO=1 AND A.PAIS='BRA'ORDER BY COUNT(R.COLOCACAO) DESC
  3. CSELECT NOME, COUNT(*)FROM RESULTADO, ATLETAWHERE NUMERO=NUM_ATL AND COLOCACAO=1 AND PAIS='BRA'GROUP BY NOMEORDER BY COUNT(*) DESC
  4. DSELECT A.NOME, COUNT(*)FROM ATLETA A, RESULTADO RHAVING A.NUMERO=NUM_ATL AND R.COLOCACAO=1 AND A.PAIS='BRA'GROUP BY A.NOMEORDER BY COUNT(*) DESC
  5. ESELECT A.NOME, COUNT(*)FROM ATLETA A, RESULTADO RWHERE A.NUMERO=NUM_ATL AND R.COLOCACAO=1GROUP BY A.NOMEHAVING A.PAIS='BRA'ORDER BY COUNT(*) DESC
Revelar gabarito e comentário

GabaritoC — SELECT NOME, COUNT(*) FROM RESULTADO, ATLETA WHERE NUMERO=NUM_ATL AND COLOCACAO=1 AND PAIS='BRA' GROUP BY NOME ORDER BY COUNT(*) DESC

Link permanente: /questoes/cg016094