Questão nº 21

Questão de Tecnologia da Informação · FCC TRT15 2024 (nº 21)

FCC2024Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Aver comentário ↓

Em um banco de dados Oracle 19c, aberto e funcionando em condições ideais, existe uma tabela tprocessos com dados válidos, que tem a seguinte estrutura:

  • id_processo (número único de identificação do processo)
  • data_abertura (data em que o processo foi aberto)
  • id_vara (identificador da vara do trabalho onde o processo tramita)
  • valor_processo (valor monetário associado ao processo)

O comando SQL que lista o id_vara, o número total de processos por vara e o valor total dos processos, em ordem decrescente, somente das varas que possuem mais de 100 processos abertos antes de 1º de janeiro de 2020, é:

Resposta comentada

Gabarito Alternativa A

Em SQL, as cláusulas WHERE, GROUP BY, HAVING e ORDER BY são usadas para filtrar, agrupar e ordenar dados. A cláusula WHERE filtra linhas individuais antes de qualquer agrupamento, GROUP BY agrupa as linhas, HAVING filtra os grupos resultantes e ORDER BY organiza a saída final.

  • (A) Correta: Esta alternativa segue a ordem correta das cláusulas SQL e atende a todos os requisitos da questão. Primeiro, filtra os processos abertos antes de 2020 (WHERE data_abertura < '2020-01-01'). Em seguida, agrupa os resultados por vara (GROUP BY id_vara). Depois, filtra esses grupos para incluir apenas as varas com mais de 100 processos (HAVING COUNT(*) > 100). Finalmente, ordena o resultado pelo valor total dos processos em ordem decrescente (ORDER BY SUM(valor_processo) DESC).
  • (B) Incorreta: A ordem das cláusulas ORDER BY e HAVING está invertida. Em SQL padrão, a cláusula HAVING deve vir antes da cláusula ORDER BY. Embora alguns sistemas de banco de dados possam ser flexíveis, a sintaxe correta e mais comum exige HAVING antes de ORDER BY. Esta é a armadilha mais comum, pois a lógica de filtragem e ordenação está presente, mas a estrutura sintática está incorreta.
  • (C) Incorreta: A cláusula ORDER BY está incorreta. ORDER BY COUNT(valor_total) tentaria contar o número de valores não nulos do alias valor_total (que é SUM(valor_processo)) em cada grupo, o que sempre resultaria em 1 para cada grupo, não ordenando pelo valor total do processo como solicitado. Além disso, COUNT(id_processo) é redundante, COUNT(*) já conta todas as linhas não nulas de um grupo.
  • (D) Incorreta: A condição WHERE data_abertura <= '2020-01-01' inclui processos abertos em 1º de janeiro de 2020, enquanto a questão pede "antes de 1º de janeiro de 2020" (ou seja, < '2020-01-01'). Além disso, falta a cláusula HAVING para filtrar as varas com mais de 100 processos, e a ordenação ORDER BY valor_total está em ordem crescente por padrão, não decrescente.
  • (E) Incorreta: A condição na cláusula HAVING está errada. A questão pede "mais de 100 processos abertos", o que se traduz em HAVING COUNT(*) > 100. Esta alternativa usa HAVING SUM(valor_processo) > 100000, que filtra por valor monetário total, não pelo número de processos.

Fonte: FCC TRT15 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho