Enunciados de questões e informações de concursos
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?
FROM RESULTADO R, ATLETA A
WHERE A.NUMERO=R.NUM_ATL AND R.COLOCACAO=1 AND A.PAIS='BRA'
ORDER BY COUNT(R.COLOCACAO) DESC
FROM RESULTADO, ATLETA
WHERE NUMERO=NUM_ATL AND COLOCACAO=1 AND PAIS='BRA'
GROUP BY NOME
ORDER BY COUNT(*) DESC
FROM ATLETA A, RESULTADO R
HAVING A.NUMERO=NUM_ATL AND R.COLOCACAO=1 AND A.PAIS='BRA'
GROUP BY A.NOME
ORDER BY COUNT(*) DESC
FROM ATLETA A, RESULTADO R
WHERE A.NUMERO=NUM_ATL AND R.COLOCACAO=1
GROUP BY A.NOME
HAVING A.PAIS='BRA'
ORDER BY COUNT(*) DESC