Questão FC295913
Qual consulta SQL recupera do banco de dados um conjunto de tuplas em que cada uma delas contém o nome de um canal e a quantidade de filmes que esse canal irá exibir no mês corrent
Linguagem SQL
CESGRANRIO · 2018
Considere as informações a seguir para responder a questão
O esquema relacional abaixo descreve o banco de dados usado por uma operadora de TV a cabo para registrar os filmes que serão exibidos em seus diversos canais durante o mês corrente. Um filme pode ser exibido várias vezes durante o mês, possivelmente em canais e horários distintos. Um canal exibe vários filmes.
CREATE TABLE CANAL (
NUMERO NUMBER(4) NOT NULL,
NOME VARCHAR2(50) NOT NULL,
CONSTRAINT CANAL_PK PRIMARY KEY (NUMERO) )
CREATE TABLE FILME (
CODIGO NUMBER(5) NOT NULL,
NOME VARCHAR2(50) NOT NULL,
DURACAO NUMBER(3) NOT NULL,
CONSTRAINT FILME_PK PRIMARY KEY (CODIGO) )
CREATE TABLE GRADE (
NUM_CH NUMBER(4) NOT NULL,
COD_FILME NUMBER(5) NOT NULL,
DIA NUMBER(2) NOT NULL,
HORA NUMBER(2) NOT NULL,
CONSTRAINT GRADE_PK PRIMARY KEY (NUM_CH, COD_FILME, DIA, HORA),
CONSTRAINT GRADE_FK1 FOREIGN KEY (NUM_CH)
REFERENCES CANAL (NUMERO),
CONSTRAINT GRADE_FK2 FOREIGN KEY (COD_FILME)
REFERENCES FILME (CODIGO) )
Qual consulta SQL recupera do banco de dados um conjunto de tuplas em que cada uma delas contém o nome de um canal e a quantidade de filmes que esse canal irá exibir no mês corrente?
- SELEC0T C.NOME, COUNT(*)
FROM CANAL C, GRADE G
WHERE C.NUMERO=G.NUM_CH
ORDER BY COUNT(*)
- SELECT C.NOME, COUNT(*) AS X
FROM CANAL C, GRADE G
WHERE C.NUMERO=G.NUM_CH
GROUP BY C.NOME
ORDER BY COUNT(*)
- SELECT C.NOME, COUNT(*) AS X
FROM CANAL C, GRADE G
WHERE C.NUMERO=G.NUM_CH
ORDER BY X
- SELECT C.NOME, COUNT(*) AS X
FROM CANAL C, GRADE G
WHERE C.NUMERO=G.NUM_CH
GROUP BY C.NUMERO
ORDER BY X
- SELECT C.NOME, COUNT(*) AS X
FROM CANAL C, GRADE G
WHERE C.NUMERO=G.NUM_CH
ORDER BY COUNT(X)
GROUP BY C.NOME
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A consulta da alternativa B faz um JOIN implícito entre CANAL e GRADE pela condição C.NUMERO=G.NUM_CH, garantindo que sejam considerados apenas os registros de programação vinculados a cada canal.
Em seguida usa a função de agregação COUNT(*) para contar todas as ocorrências na tabela GRADE — ou seja, cada exibição cadastrada — agrupadas por C.NOME mediante o comando GROUP BY. Assim, cada tupla do resultado traz o nome do canal e a quantidade de filmes/exibições no mês.
O alias X apenas nomeia a coluna de contagem; a cláusula ORDER BY COUNT(*) ordena o resultado pelo número de exibições (ordem crescente por padrão). A estrutura respeita a necessidade de agrupar todas as colunas não agregadas presentes no SELECT.
Conteúdo do catálogo FC Concursos · Atualizado em