Questão nº 39
Questão de Tecnologia da Informação · FCC TRT-1 2025 (nº 39)
Um Tribunal Regional do Trabalho deseja consultar a quantidade de audiências realizadas nos últimos 3 meses para o tipo de processo trabalhista `'RESCISÃO CONTRATUAL'`. Em um banco de dados PostgreSQL, aberto e funcionando em condições ideais, a consulta é obtida usando-se o comando:
- A```sql
SELECT COUNT(*)
FROM audiencias
WHERE tipo_processo = 'RESCISAO CONTRATUAL'
AND data_audiencia >= MAKE_INTERVAL(months := 3);
``` - B```sql
SELECT COUNT(*)
FROM audiencias
WHERE tipo_processo = 'RESCISAO CONTRATUAL'
AND data_audiencia >= CURRENT_DATE - INTERVAL '3 MONTH';
``` (alternativa correta) - C```sql
SELECT COUNT(*) AS total
FROM audiencias
WHERE tipo_processo = 'RESCISAO CONTRATUAL'
AND data_audiencia >= CURRENT_DATE - '90 DAYS';
``` - D```sql
SELECT COUNT(*)
FROM audiencias
WHERE tipo_processo = 'RESCISAO CONTRATUAL'
AND data_audiencia >= NOWDATE() - INTERVAL '3 MONTH';
``` - E```sql
SELECT COUNT(*)
FROM audiencias
WHERE tipo_processo = 'RESCISAO CONTRATUAL'
AND data_audiencia >= DATE_TRUNC('MONTH', NOW()) - '3 MONTHS';
```
Resposta comentada
Gabarito Alternativa B
O conceito-chave para filtrar dados por um período de tempo, como "nos últimos 3 meses", é subtrair um intervalo de tempo de uma data de referência (geralmente a data atual). O PostgreSQL oferece funções e operadores específicos para realizar essa aritmética de datas de forma precisa.
(A) Incorreta: A função `MAKE_INTERVAL(months := 3)` cria um intervalo de tempo, não uma data. Não é possível comparar diretamente uma coluna de data (`data_audiencia`) com um intervalo de tempo. A comparação `data_audiencia >= INTERVAL` é um erro de tipo.
(B) Correta: `CURRENT_DATE` retorna a data atual. `INTERVAL '3 MONTH'` define um intervalo de 3 meses. A expressão `CURRENT_DATE - INTERVAL '3 MONTH'` calcula corretamente a data exata de 3 meses atrás a partir da data atual, garantindo que a consulta inclua todas as audiências realizadas nos últimos 3 meses.
(C) Incorreta: Embora `CURRENT_DATE - '90 DAYS'` seja sintaticamente válido no PostgreSQL (que converte `'90 DAYS'` para um `INTERVAL`), "3 meses" não é o mesmo que "90 dias". Meses têm durações variadas (28, 29, 30 ou 31 dias). Usar `INTERVAL '3 MONTH'` é a forma precisa de se referir a "3 meses", enquanto "90 dias" é apenas uma aproximação e pode levar a resultados ligeiramente diferentes. Armadilha: Esta é a alternativa mais tentadora por ser sintaticamente correta e semanticamente próxima, mas não exata.
(D) Incorreta: `NOWDATE()` não é uma função padrão do PostgreSQL para obter a data ou o timestamp atual. As funções corretas seriam `CURRENT_DATE` (para a data) ou `NOW()`/`CURRENT_TIMESTAMP` (para o timestamp). Esta consulta resultaria em um erro de função desconhecida.
(E) Incorreta: `DATE_TRUNC('MONTH', NOW())` retorna o primeiro dia do mês atual. Ao subtrair `'3 MONTHS'` desse valor, a consulta buscaria audiências a partir do primeiro dia de 3 meses atrás (ex: se hoje é 15 de maio, buscaria a partir de 1º de fevereiro). A pergunta pede "nos últimos 3 meses" a partir da data atual, o que seria 3 meses atrás do dia 15 de maio (ou seja, a partir de 15 de fevereiro), e não do início do mês.
Fonte: FCC TRT-1 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 004). Reproduzida para fins de estudo.