FC ConcursosFC Concursos

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?

  1. SELEC0T C.NOME, COUNT(*)

    FROM CANAL C, GRADE G

    WHERE C.NUMERO=G.NUM_CH

    ORDER BY COUNT(*)

  2. SELECT C.NOME, COUNT(*) AS X

    FROM CANAL C, GRADE G

    WHERE C.NUMERO=G.NUM_CH

    GROUP BY C.NOME

    ORDER BY COUNT(*)

  3. SELECT C.NOME, COUNT(*) AS X

    FROM CANAL C, GRADE G

    WHERE C.NUMERO=G.NUM_CH

    ORDER BY X

  4. SELECT C.NOME, COUNT(*) AS X

    FROM CANAL C, GRADE G

    WHERE C.NUMERO=G.NUM_CH

    GROUP BY C.NUMERO

    ORDER BY X

  5. 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

Continue aprendendo