SóProvas


ID
1387780
Banca
CESGRANRIO
Órgão
LIQUIGÁS
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

As tabelas a seguir pertencem ao esquema de um banco de dados de atletas de salto em distância.

CREATE TABLE ATLETA (
   COD NUMBER(5) NOT NULL,
   NOME VARCHAR2(50) NOT NULL,
   NUM_INSCR NUMBER(7),
   TELEFONE VARCHAR2(8) NOT NULL,
   CONSTRAINT ATLETA_PK PRIMARY KEY (COD))
CREATE TABLE PROVA (
   COD_ATL NUMBER(5) NOT NULL,
   COD_PROVA NUMBER(5) NOT NULL,
   MARCA NUMBER(5,2),
   CONSTRAINT PROVA_PK PRIMARY KEY (COD_ATL,COD_PROVA),
   CONSTRAINT PROVA_FK FOREIGN KEY (COD_ATL) REFERENCES
         ATLETA(COD))

Observação:
• A coluna MARCA, localizada na tabela PROVA, contém a distância, em metros, saltada por um atleta em uma prova.

Seja x a média das marcas alcançadas por todos os saltos registrados na tabela PROVA.
Qual consulta permite exibir o código dos atletas que realizaram mais de dois saltos cujas marcas são menores do que x?

Alternativas
Comentários
  • O item requer um pouco de raciocínio. Precisamos retornar os códigos dos atletas que possuam mais de dois saltos maiores que a média. A tabela Prova é suficiente para a nossa tarefa, já que ela representa uma participação de um atleta em uma prova, e por isso já tem o código dos atletas e a marca correspondente.

    Para facilitar o entendimento, por enquanto esqueça o cálculo da média. Nós precisamos, então, obter os códigos de todos os atletas que têm mais de duas marcas em provas. Isso pode ser feito da seguinte maneira:

    _SELECT P.COD_ATL

    _FROM Prova P

    _GROUP BY P.COD_ATL

    _HAVING COUNT(*) > 2

    Agora precisamos limitar as marcas somente àquelas maiores que o valor da média dos saltos obtidos em toda a tabela prova. Essa média pode ser obtida por:

    _SELECT AVG(marca) FROM Prova

    Assim, basta compararmos esse valor ao valor da marca na consulta:

    _SELECT P.COD_ATL

    _FROM Prova P

    _WHERE P.marca > (S ELECT AVG(marca) FROM Prova)

    _GROUP BY P.COD_ATL

    _HAVING COUNT(*) > 2

    Resposta letra C!

  • Acredito que a explicação está incorreta, mas o gabarito está certo.

    O enunciado pediu os valores MENORES que a média X.

    O enunciado diz o seguinte:

    "Seja x a média das marcas alcançadas por todos os saltos registrados na tabela PROVA. Qual consulta permite exibir o código dos atletas que realizaram mais de dois saltos cujas marcas são MENORES do que x?