FC ConcursosFC Concursos

Questão FC369499

Maria executou as seguintes instruções em SQL para criação de tabelas: CREATE TABLE T1 ( id_A INT, a1 CHAR(10), a2 CHAR(10)); CREATE TABLE T2 ( id_B INT, b1 CHAR(10), b2 CHAR(10));

Linguagem SQL

FGV · 2024

Maria executou as seguintes instruções em SQL para criação de tabelas:

 

CREATE TABLE T1 (
id_A INT,
a1 CHAR(10),
a2 CHAR(10));

 

CREATE TABLE T2 (
id_B INT,
b1 CHAR(10),
b2 CHAR(10));

 

CREATE TABLE T3 (
id_A INT,
id_B INT,
c1 CHAR(10),
c2 CHAR(10));

 

Maria deseja listar a quantidade e os respectivos dados de T1 que possuem pelo menos 1 e no máximo 5 relacionamentos com T2. Para isso, ela deve utilizar a instrução:

  1. SELECT COUNT(c.id_A), a.a1, a.a2 FROM T1 a INNER JOIN T3 c ON c.id_A = a.id_A WHERE COUNT(c.id_A) < = 5;
  2. SELECT a.id_A, a.a1, a.a2

    FROM T1 a, T2 b

    LEFT OUTER JOIN T3 c ON c.id_A = a.id_A

    LEFT OUTER JOIN T3 c ON c.id_B = b.id_B

    GROUP BY a.a1, a.a2

    HAVING COUNT(a.id_A) < = 5;

  3. SELECT COUNT(a.id_A), a.a1, a.a2

    FROM T1 a

    INNER JOIN T3 c ON c.id_A = a.id_A

    WHERE a.id_A < = 5;

  4. SELECT COUNT(a.id_A), a.*

    FROM T1 a

    INNER JOIN T3 c ON c.id_A = a.id_A

    GROUP BY a.a1, a.a2

    HAVING COUNT(a.id_A) < = 5;

  5. SELECT a.id_A, a.a1, a.a2

    FROM T1 a

    RIGHT OUTER JOIN T3 c ON c.id_A = a.id_A

    GROUP BY a.id_A, a.a1, a.a2

    HAVING COUNT(a.id_A) < = 5;

Mostrar resposta e comentário

Gabarito

D

Comentário do professor

A instrução correta usa SELECT COUNT e a.* para retornar, respectivamente, a quantidade de ocorrências ligadas em T3 e todas as colunas de T1.

O INNER JOIN com c (c.id_A = a.id_A) garante que somente os registros de T1 que possuem pelo menos uma correspondência em T3 sejam considerados.

O GROUP BY sobre a.a1, a.a2 agrupa as linhas por combinação desses atributos, permitindo aplicar a função agregadora COUNT para cada grupo.

A cláusula HAVING filtra o resultado da agregação, mantendo só os grupos cuja contagem satisfaça \(COUNT(a.id_A) \le 5\). Assim obtemos T1 com mínimo 1 e máximo 5 relacionamentos em T3.

Os aliases (a e c) tornam a consulta mais legível e evitam ambiguidade ao referenciar colunas nas cláusulas de junção, agrupamento e filtro.

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

Continue aprendendo