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:
- 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;
- 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;
- SELECT ano, AVG(duracao_minutos)
FROM processo p LEFT JOIN audiencia a USING
(id_processo)
GROUP BY ano
HAVING COUNT(a.id_processo) > 100;
- 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;
- 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