SóProvas


ID
748093
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Considere as informações a seguir para responder às questões de nos 31 a 33. As tabelas são utilizadas para descrever um banco de dados que armazena dados sobre linhas de ônibus, motoristas e viagens por eles realizadas.

CREATE TABLE MOTORISTA (     
     MATRICULA NUMBER(7,0) NOT NULL, 
    NOME VARCHAR2(50) NOT NULL,
    CPF NUMBER(11,0) NOT NULL,  
    CNH VARCHAR2(15) NOT NULL,
    CONSTRAINT MOTORISTA_PK PRIMARY KEY (MATRICULA),
    CONSTRAINT MOTORISTA_UK1 UNIQUE (CPF),
    CONSTRAINT MOTORISTA_UK2 UNIQUE (CNH))

CREATE TABLE LINHA (
    NUMERO CHAR(5) NOT NULL,
    ORIGEM VARCHAR2(50) NOT NULL,
    DESTINO VARCHAR2(50) NOT NULL,
    CONSTRAINT LINHA_PK PRIMARY KEY (NUMERO)
)

CREATE TABLE VIAGEM (
    MAT_MOT NUMBER (7,0) NOT NULL,
    NUM_LINHA CHAR(5) NOT NULL,
    INICIO DATE NOT NULL,
    FINAL DATE,
    CONSTRAINT VIAGEM_PK PRIMARY KEY (MAT_MOT,NUM_LINHA,INICIO),
    CONSTRAINT VIAGEM_FK1 FOREIGN KEY (MAT_MOT) REFERENCES MOTORISTA (MATRICULA),
    CONSTRAINT VIAGEM_FK2 FOREIGN KEY (NUM_LINHA) REFERENCES LINHA (NUMERO))

Considerando a possibilidade de que dois ou mais pares (ORIGEM,DESTINO) tenham o mesmo número de viagens, qual consulta permite exibir o par que possui o maior número de viagens (concluídas ou não) registradas no banco de dados?

Alternativas
Comentários
  • Tenho dúvidas quanto ao uso das funções agregadas MAX(COUNT(*)). Pelo o que tenho visto, não é possível utilizar uma função agregada sobre o resultado de outra função agregada. O MAX(COUNT(*)) poderia ser substituído por  >=ALL (indica que um valor é maior que todos ou igual ao maior elemento de um conjunto). Alguém sabe se nas versões mais recentes da SQL é permitido o uso de funções agregadas desta maneira?
  • O SQL padrão não permite aninhar funções de agregação. Por exemplo, isto NÃO é permitido:

    MAX(COUNT(*))

    mas o Oracle permite!

    Ou seja, a letra A é correta, desde que o SGBD seja o Oracle

    A letra D exibe os pares ordenados por maior número de viagens. É a única consulta válida pelo padrão SQL. Porém, retorna todos os pares (por que no enunciado está o par em vez de os pares?) e não somente o par (?) com o maior número de viagens, conforme condição da questão.

    Questão mal formulada.