Procura

Banco de dadosSql (2)


EXERCÍCIOS - Exercício 21

  • (CESGRANRIO 2012)

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?


A) SELECT L.ORIGEM,L.DESTINO FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO HAVING COUNT(*)=(SELECT MAX(COUNT(*)) FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO)

B) SELECT L.ORIGEM,L.DESTINO FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY V.NUM_LINHA HAVING COUNT(*)=(SELECT MAX(COUNT(NUM_LINHA)) FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO)

C) SELECT L.ORIGEM,L.DESTINO FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO H AVING COUNT(*)=(SELECT MAX(COUNT(DISTINCT NUM_LINHA)) FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO)

D) SELECT L.ORIGEM,L.DESTINO FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO ORDER BY COUNT(*) DESC

E) SELECT L.ORIGEM,L.DESTINO FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO AND COUNT(*)=(SELECT MAX(COUNT(*)) FROM VIAGEM V,LINHA L WHERE V.NUM_LINHA=L.NUMERO GROUP BY L.ORIGEM,L.DESTINO) GROUP BY L.ORIGEM,L.DESTINO


Próximo:
EXERCÍCIOS - Exercício 22

Vamos para o Anterior: Exercício 20

Tente Este: Exercício 132

Primeiro: Exercício 1

VOLTAR ao índice: Banco de dados






Cadastre-se e ganhe o primeiro capítulo do livro.
+