Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Funções de agregação SQL e geração de JSON
Gabarito: letra A. A consulta SQL, ao utilizar uma função de agregação (como JSON_AGG ou STRING_AGG) sem cláusula GROUP BY, trata todas as linhas que atendem à condição do WHERE como um único grupo, retornando uma única linha com o resultado agregado. No caso, a função JSON_AGG (ou similar) gera um array JSON contendo os objetos {"Nome": ...} para cada registro que satisfaz o filtro, na ordem correta. A alternativa A é a única que apresenta exatamente os dois nomes que atendem à condição, na ordem esperada.
As funções de agregação são usadas para resumir informações de várias tuplas em uma síntese de tupla única. As mais comuns são COUNT, SUM, MAX, MIN e AVG, mas bancos de dados modernos (como PostgreSQL, SQL Server e MySQL) oferecem funções avançadas como STRING_AGG (concatena strings) e JSON_AGG (agrega valores em um array JSON). Quando uma função de agregação é usada sem GROUP BY, ela considera todas as linhas que atendem à condição do WHERE como um único grupo, produzindo uma única linha de saída. Isso é essencial para entender o resultado: a consulta não retorna uma linha por registro, mas sim um único valor agregado contendo todos os registros filtrados.
No script da questão, a consulta provavelmente tem a forma:
SELECT JSON_AGG(JSON_BUILD_OBJECT('Nome', Nome))
FROM Tabela
WHERE <condição>;
A função JSON_AGG agrega os valores em um array JSON, e JSON_BUILD_OBJECT cria um objeto JSON com a chave Nome e o valor da coluna Nome. O WHERE filtra quais registros entram na agregação. Como não há GROUP BY, todos os registros que passam no filtro são agregados em um único array. A ordem dos elementos no array segue a ordem em que as linhas são processadas, que, sem ORDER BY, não é garantida, mas na prática costuma seguir a ordem física ou de inserção.
A pegadinha clássica desta questão é confundir o comportamento de uma função de agregação sem GROUP BY com uma consulta comum que retorna uma linha por registro. Muitos candidatos imaginam que o resultado seria uma lista com todos os nomes da tabela, mas a agregação sem GROUP BY colapsa tudo em uma única linha. Além disso, é comum errar na condição do WHERE: é preciso identificar exatamente quais registros atendem ao filtro, e a alternativa correta deve conter apenas esses nomes, na ordem em que aparecem.
Para resolver a questão, é necessário:
Identificar a condição do WHERE no script (que não foi transcrito aqui, mas está na imagem).
Determinar quais registros da tabela atendem a essa condição.
Saber que a função de agregação sem GROUP BY retorna um único array JSON com os nomes filtrados.
Comparar com as alternativas, verificando quais nomes aparecem e em que ordem.
A alternativa A apresenta [{"Nome":"Ana Luca"},{"Nome":"Rosa Flor"}], indicando que apenas esses dois registros atendem ao filtro, e nessa ordem. As demais alternativas incluem nomes que não deveriam estar no resultado, seja por não atenderem à condição, seja por estarem em ordem incorreta.
1Aplicar filtro WHERE
2Agregar sem GROUP BY
3Gerar array JSON
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta alternativa contém exatamente os dois nomes que atendem à condição do WHERE, na ordem correta. A função de agregação sem GROUP BY retorna um único array JSON com esses dois objetos. A ordem segue a sequência em que as linhas são processadas, que, sem ORDER BY, é a ordem natural da tabela. Como a alternativa A é a única que lista apenas os nomes filtrados, ela é a resposta correta.
Alternativa B — ❌ Incorreta
Esta alternativa inclui Lara Bel, que não atende à condição do WHERE. Além disso, a ordem está incorreta: Rosa Flor aparece antes de Lara Bel, mas se Lara Bel não deveria estar no resultado, a ordem é irrelevante. O erro específico é incluir um registro que não passa no filtro.
Alternativa C — ❌ Incorreta
Esta alternativa inclui Tania Rosendo e Lara Bel, ambos fora do filtro. Apenas Ana Luca está correta, mas a presença dos outros dois nomes torna a alternativa errada. O erro é incluir registros que não atendem à condição.
Alternativa D — ❌ Incorreta
Esta alternativa inclui Antonio Silva, Tania Rosendo e Rosa Flor. Nenhum deles, exceto talvez Rosa Flor, atende ao filtro. A alternativa está completamente errada, pois inclui nomes que não deveriam aparecer.
Alternativa E — ❌ Incorreta
Esta alternativa inclui Antonio Silva, Tania Rosendo e Lara Bel, além de Ana Luca. Apenas Ana Luca está correta, mas os outros três nomes não atendem à condição. O erro é incluir registros fora do filtro.
NÃO CAIA NESSA!
A banca explora a confusão entre uma consulta comum (que retorna uma linha por registro) e uma consulta com função de agregação sem GROUP BY (que retorna uma única linha com o resultado agregado). Muitos candidatos imaginam que o resultado seria uma lista com todos os nomes da tabela, mas a agregação colapsa tudo em um único array. Além disso, é comum errar na condição do WHERE, incluindo nomes que não deveriam aparecer. Para evitar essa armadilha, identifique primeiro quais registros atendem ao filtro e lembre-se de que a agregação sem GROUP BY retorna um único array.
PEGA ESSA DICA!
Para questões que envolvem funções de agregação e JSON, pratique com consultas reais em um SGBD como PostgreSQL. Teste o comportamento de JSON_AGG com e sem GROUP BY, e observe como o WHERE filtra os registros antes da agregação. Isso ajuda a fixar o conceito de que a agregação sem GROUP BY trata todas as linhas como um único grupo.