FC ConcursosFC Concursos

Questão FC890515

Considere o script SQL a seguir. CREATE TABLE processo ( id_processo SERIAL PRIMARY KEY, ano INTEGER NOT NULL ); CREATE TABLE audiencia ( id_audiencia SERIAL PRIMARY KEY, id_proces

Linguagem SQL

FGV · 2026

Considere o script SQL a seguir.

 

CREATE TABLE processo (

     id_processo SERIAL PRIMARY KEY,

     ano INTEGER NOT NULL

);

CREATE TABLE audiencia (

     id_audiencia SERIAL PRIMARY KEY,

     id_processo INTEGER NOT NULL REFERENCES

processo(id_processo),

     duracao_minutos INTEGER NOT NULL);

INSERT INTO processo (id_processo, ano) VALUES

(1, 2023),

(2, 2023),

(3, 2024),

(4, 2024);

INSERT INTO audiencia (id_processo, duracao_minutos)

VALUES

(1, 50),

(1, 80),

(2, 120),

(3, 40);

 

Para listar o ano e a média da duração das audiências, exibindo somente os anos cuja soma das durações ultrapasse 100 minutos, deve-se utilizar a query:

  1. SELECT p.ano, AVG(a.duracao_minutos)

    FROM processo p

    LEFT JOIN audiencia a ON p.id_processo = a.id_processo

    GROUP BY p.ano

    HAVING AVG(a.duracao_minutos) > 100;

  2. SELECT p.ano, AVG(a.duracao_minutos)

    FROM processo p

    INNER JOIN audiencia a ON p.id_processo =

    a.id_processo

    GROUP BY p.ano

    HAVING SUM(a.duracao_minutos) > 100;

  3. SELECT ano, AVG(duracao_minutos)

    FROM processo p LEFT JOIN audiencia a USING

    (id_processo)

    GROUP BY ano

    HAVING COUNT(a.id_processo) > 100;

  4. SELECT p.ano, AVG(a.duracao_minutos)

    FROM audiencia a RIGHT JOIN processo p ON

    a.id_processo = p.id_processo

    GROUP BY p.ano

    HAVING SUM(a.duracao_minutos) IS NULL;

  5. SELECT ano, AVG(duracao_minutos)

    FROM audiencia a JOIN processo p USING (id_processo)

    GROUP BY ano

    HAVING SUM(duracao_minutos) = MAX(duracao_minutos);

Mostrar resposta e comentário

Gabarito

B

Comentário do professor

A consulta usa INNER JOIN para relacionar processos e audiências e retorna p.ano junto com a média de duração por ano via AVG(a.duracao_minutos).

O GROUP BY p.ano agrupa as linhas por ano, permitindo calcular agregados por cada ano separado. Assim, a média é calculada por grupo (ano).

Para filtrar apenas os anos cuja soma das durações excede 100 minutos, a cláusula HAVING é usada com a condição \( \text{SUM}(a.duracao\_minutos) > 100 \). A cláusula WHERE não poderia aplicar esse critério porque não aceita agregações.

Portanto, a query seleciona a média das audiências por ano e exibe apenas os anos cuja soma total de durações ultrapassa 100 minutos, considerando apenas processos que possuem audiências registrados.

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

Continue aprendendo