Questão nº 21
Questão de Tecnologia da Informação · FCC TRT15 2024 (nº 21)
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, é:
- A```
SELECT id_vara, COUNT() AS total_processos, SUM(valor_processo) AS valor_total
FROM tprocessos
WHERE data_abertura < '2020-01-01'
GROUP BY id_vara
HAVING COUNT() > 100
ORDER BY SUM(valor_processo) DESC;
``` (alternativa correta) - B```
SELECT id_vara, COUNT() AS total_processos, SUM(valor_processo) AS valor_total
FROM tprocessos
WHERE data_abertura < '2020-01-01'
GROUP BY id_vara
ORDER BY SUM(valor_processo) DESC
HAVING COUNT() > 100;
``` - C```
SELECT id_vara, COUNT(id_processo) AS total_processos, SUM(valor_processo) AS valor_total
FROM tprocessos
WHERE data_abertura < '2020-JAN-01'
GROUP BY id_vara
HAVING COUNT(id_processo) > 100
ORDER BY COUNT(valor_total);
``` - D```
SELECT id_vara, COUNT(*) AS total_processos, SUM(valor_processo) AS valor_total
FROM tprocessos
WHERE data_abertura <= '2020-01-01'
GROUP BY id_vara
ORDER BY valor_total;
``` - E```
SELECT id_vara, COUNT(*) AS total_processos, SUM(valor_processo) AS valor_total
FROM tprocessos
WHERE data_abertura < '2020-01-01'
GROUP BY id_vara
HAVING SUM(valor_processo) > 100000
ORDER BY valor_total DESC;
```
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 BYeHAVINGestá invertida. Em SQL padrão, a cláusulaHAVINGdeve vir antes da cláusulaORDER BY. Embora alguns sistemas de banco de dados possam ser flexíveis, a sintaxe correta e mais comum exigeHAVINGantes deORDER 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 BYestá incorreta.ORDER BY COUNT(valor_total)tentaria contar o número de valores não nulos do aliasvalor_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áusulaHAVINGpara filtrar as varas com mais de 100 processos, e a ordenaçãoORDER BY valor_totalestá em ordem crescente por padrão, não decrescente. - (E) Incorreta: A condição na cláusula
HAVINGestá errada. A questão pede "mais de 100 processos abertos", o que se traduz emHAVING COUNT(*) > 100. Esta alternativa usaHAVING 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.