FC ConcursosFC Concursos

Questão FC295906

Qual consulta irá fornecer o relatório que o gerente de produção deseja?

Linguagem SQL

CESGRANRIO · 2018

Uma empresa que comercializa álbuns de figurinhas (cromos) possui um banco de dados para controlar a fabricação de cromos. O modelo conceitual desse banco de dados é exibido na Figura a seguir.

 

O modelo conceitual acima deu origem às seguintes Tabelas:

CREATE TABLE ALBUM (

    COD                   CHAR(5)                  NOT NULL,

    NOME                VARCHAR2(4000)    NOT NULL,

    CONSTRAINT     ALBUM_PK  PRIMARY KEY  (COD))

 

CREATE TABLE CROMO ( 

  COD                  NUMBER(5)              NOT NULL,

    NUMERO           NUMBER(4)              NOT NULL,

    DESCRICAO      VARCHAR2(500)       NOT NULL,

    COD_ALBUM     CHAR(5)                   NOT NULL,

    CONSTRAINT    CROMO_PK  PRIMARY KEY  (COD),

    CONSTRAINT    CROMO_FK  FOREIGN KEY  (COD_ALBUM)

       REFERENCES ALBUM (COD))

 

CREATE TABLE FABRICACAO (

    NUM_FAB          NUMBER(5)              NOT NULL,

    QUANTIDADE    NUMBER(5)              NOT NULL,

    DATA                 DATE                        NOT NULL,

    COD_CROMO    NUMBER(5)              NOT NULL,

    CONSTRAINT     FABRICACAO_PK   PRIMARY KEY  (NUM_FAB),

    CONSTRAINT     FABRICACAO_FK   FOREIGN KEY  (COD_CROMO)

       REFERENCES CROMO (COD))

 

O gerente de produção dessa empresa deseja obter um relatório que exiba, para cada álbum comercializado, o nome do álbum, o número de cada um de seus cromos e o somatório da quantidade fabricada de cada um deles.

Qual consulta irá fornecer o relatório que o gerente de produção deseja?

  1. SELECT A.NOME, B.NUMERO, COALESCE (SUM (C.QUANTIDADE),0) “QTD FABR” FROM

          ALBUM A, CROMO B

          LEFT JOIN FABRICACAO C ON B.COD = C.COD_CROMO

    GROUP BY A.NOME, B.NUMERO

    ORDER BY A.NOME, B.NUMERO

  2. SELECT A.NOME, B.NUMERO, COALESCE (SUM (C.QUANTIDADE),0) “QTD FABR” FROM

          ALBUM A INNER JOIN CROMO B ON A.COD = B.COD_ALBUM

          LEFT JOIN FABRICACAO C ON B.COD = C.COD_CROMO

    GROUP BY A.NOME, B.NUMERO

    ORDER BY A.NOME, B.NUMERO

  3. SELECT A.NOME, B.NUMERO, COALESCE (SUM (C.QUANTIDADE),0) “QTD FABR” FROM

          ALBUM A, CROMO B

          RIGHT JOIN FABRICACAO C ON B.COD = C.COD_CROMO

    WHERE A.COD = B.COD_ALBUM

    GROUP BY A.NOME, B.NUMERO

    ORDER BY A.NOME, B.NUMERO

  4. SELECT A.NOME, B.NUMERO, COALESCE (SUM (C.QUANTIDADE),0) “QTD FABR” FROM

          ALBUM A, CROMO B

          FULL OUTER JOIN FABRICACAO C ON B.COD = C.COD_CROMO

    GROUP BY A.NOME, B.NUMERO

    ORDER BY A.NOME, B.NUMERO

  5. SELECT A.NOME, B.NUMERO, COALESCE (SUM (C.QUANTIDADE),0) “QTD FABR” FROM

          ALBUM A, CROMO B, FABRICACAO C

    WHERE A.COD = B.COD_ALBUM AND B.COD = C.COD_CROMO

    GROUP BY A.NOME, B.NUMERO

    ORDER BY A.NOME, B.NUMERO

Mostrar resposta e comentário

Gabarito

B

Comentário do professor

A consulta seleciona A.NOME, B.NUMERO e o somatório das quantidades fabricadas por cromo, usando a agregação \( \sum \text{C.QUANTIDADE} \). A função COALESCE transforma resultado NULL em 0, cobrindo cromos sem fabricação.

O INNER JOIN entre ALBUM e CROMO garante que cada cromo pertença a um álbum (A.COD = B.COD_ALBUM). Em seguida, o LEFT JOIN de CROMO para FABRICACAO inclui cromos mesmo quando não existem registros de fabricação (B.COD = C.COD_CROMO).

Como há agregação, o GROUP BY em A.NOME e B.NUMERO agrupa os registros por álbum e por figurinha, produzindo uma linha por par (álbum, número) com o total \( \sum \).

Por fim, o ORDER BY organiza a saída por nome do álbum e número do cromo, entregando o relatório no formato solicitado.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo