Soluções da Delegacia SQL

Inquérito 004, "O homem que sabia o número do relógio": solução passo a passo

O boletim

Três vezes em três semanas, a mesma história em casas de gente de idade.

Bate um homem à porta, de camisa de manga comprida, crachá pendurado, e diz que é da companhia de energia, que veio conferir o relógio porque a conta veio alta. Entra, olha o relógio, sai dizendo que o aparelho está adulterado e que a multa é de quatrocentos reais, mas que se pagar ali na hora, à vista, sai por cento e cinquenta e ele mesmo leva o recibo na segunda.

Dona Nair Bergamasco, setenta e sete anos, pagou cento e cinquenta no Centro. Seu Otacílio Brum, oitenta e um, pagou cento e vinte no Alto do Cruzeiro. Dona Zulmira Caetano, setenta e três, pagou cento e cinquenta, também no Alto do Cruzeiro, e é a única que reparou numa coisa: o homem falou o número do relógio dela antes de olhar o relógio.

A companhia confirmou por telefone que não mandou ninguém e que não cobra multa em dinheiro.

As três vítimas descreveram o mesmo homem. A chefia quer esse homem. Cinco nomes deram depoimento no balcão.

O que o caso ensina: AND, OR e IN.

Pergunta 1

Três golpes do falso leiturista, no Alto do Cruzeiro e no Centro, que o arquivo numera como bairros 4 e 1. Traga do arquivo os estelionatos desses dois bairros.

Ver as dicas do jogo
  1. Traga da tabela `ocorrencia` o `id`, a `data`, o `bairro_id` e o `resumo` de toda ocorrência de `categoria` estelionato no Alto do Cruzeiro ou no Centro, que são os `bairro_id` 4 e 1.
  2. A `categoria` vale sempre, e o 'ou' é só dos bairros, entre parênteses: sem eles, a máquina lê o AND primeiro.
  3. Escreva: `SELECT id, data, bairro_id, resumo FROM ocorrencia WHERE categoria = 'estelionato' AND (bairro_id = 4 OR bairro_id = 1);`
Ver a consulta que resolve
SELECT id, data, bairro_id, resumo FROM ocorrencia WHERE categoria = 'estelionato' AND (bairro_id = 4 OR bairro_id = 1);

O parêntese decide a ordem: primeiro resolve o 'ou' de dentro, depois junta o resultado com a categoria pelo 'e'. Sem ele, a máquina lê o 'e' primeiro.

Resultado

id data bairro_id resumo
219 2003-04-14 1 Falso funcionário da companhia de energia levou dinheiro de moradora
221 2003-04-22 4 Falso leiturista levou dinheiro de morador do Alto do Cruzeiro
224 2003-05-06 4 Falso leiturista, terceiro caso; vítima informou o número do relógio

Pergunta 2

Traga tudo o que vítimas e testemunhas disseram em depoimento nas três ocorrências do golpe, com os três números numa lista só.

Ver as dicas do jogo
  1. Traga da tabela `depoimento` o `ocorrencia_id`, o `pessoa_id`, o `momento` e o `texto` de todo depoimento das ocorrências 219, 221 e 224.
  2. Os três números cabem numa lista só, entre parênteses e separados por vírgula, depois de IN, para a coluna `ocorrencia_id`.
  3. Escreva: `SELECT ocorrencia_id, pessoa_id, momento, texto FROM depoimento WHERE ocorrencia_id IN (219, 221, 224);`
Ver a consulta que resolve
SELECT ocorrencia_id, pessoa_id, momento, texto FROM depoimento WHERE ocorrencia_id IN (219, 221, 224);

IN troca uma fila de 'ou' por uma lista só: a coluna precisa ser igual a um dos valores entre parênteses.

Resultado

ocorrencia_id pessoa_id momento texto
219 29 2003-04-14 16:20 era um homem de idade, de chapéu, óculos de grau e camisa de manga comprida, com um crachá da companhia pendurado no pescoço. Falou baixo e foi educado o tempo todo.
219 16 2003-04-15 09:40 eu estava entregando a correspondência da rua e cruzei com um homem de chapéu e camisa de manga comprida saindo do portão da Dona Nair. Achei que fosse da companhia e dei boa tarde.
221 30 2003-04-22 17:50 magro, de chapéu, de óculos, uns sessenta e tantos. Disse que o relógio estava adulterado e que a multa era de quatrocentos reais, mas que à vista saía por cento e vinte.
224 31 2003-05-06 15:30 de chapéu e de óculos, e sabia o número do meu relógio de cor: falou o número antes de olhar o relógio, e eu só fui reparar nisso depois que ele saiu.
224 39 2003-05-07 10:10 eu entreguei gás na rua de cima naquela tarde e vi um homem de chapéu e camisa de manga comprida com uma pasta debaixo do braço. Não era ninguém da companhia, porque o da companhia eu conheço de anos.

Pergunta 3, a que o caso puxa no meio do caminho

A aposta do Seu Jaime tirada a limpo: traga do livro do balcão todo papel sobre a Viação Falcão que entrou de setembro de 2002 para cá.

Ver as dicas do jogo
  1. O livro do balcão é a tabela `protocolo`: todo papel que entra na delegacia ganha um número ali, e a coluna `ocorrencia` diz que ocorrência ele gerou. Traga o `id`, a `data`, o `tipo`, o `assunto`, o `requerente` e a `ocorrencia` de todo papel de setembro de 2002 para cá cujo `assunto` fala na Viação Falcão.
  2. Duas condições juntas, com AND: 'Falcão' no meio do `assunto`, com LIKE e porcento dos dois lados, e a `data` maior que '2002-09-01'.
  3. Escreva: `SELECT id, data, tipo, assunto, requerente, ocorrencia FROM protocolo WHERE assunto LIKE '%Falcão%' AND data > '2002-09-01';`
Ver a consulta que resolve
SELECT id, data, tipo, assunto, requerente, ocorrencia FROM protocolo WHERE assunto LIKE '%Falcão%' AND data > '2002-09-01';

LIKE e AND se somam: primeiro acha o pedaço do texto, depois só deixa passar o que também é recente.

Resultado

id data tipo assunto requerente ocorrencia
274 2002-10-01 ocorrencia Vistoria de frota — Viação Falcão 0 177
277 2002-10-09 ocorrencia Reclamação sobre transporte escolar — linha do sítio, da Viação Falcão 19 179
281 2002-10-21 pedido Pedido de cópia das vistorias da frota da Viação Falcão 11 0
285 2002-11-01 certidao Pedido de certidão de ocorrências do veículo AJE-4477, da Viação Falcão 11 0
347 2003-03-18 ocorrencia Perturbação do sossego — oficina da Viação Falcão de madrugada 25 212

Pergunta 4, a que o caso puxa no meio do caminho

O livro diz que três desses papéis geraram as ocorrências 177, 179 e 212. Traga as três do arquivo.

Ver as dicas do jogo
  1. Traga da tabela `ocorrencia` o `id`, a `data`, a `categoria` e o `resumo` das ocorrências 177, 179 e 212.
  2. Os três números numa lista só, depois de IN, para a coluna `id`. Se nada voltar, isso também é resposta.
  3. Escreva: `SELECT id, data, categoria, resumo FROM ocorrencia WHERE id IN (177, 179, 212);`
Ver a consulta que resolve
SELECT id, data, categoria, resumo FROM ocorrencia WHERE id IN (177, 179, 212);

IN com três números que o arquivo não tem devolve zero linha, e zero linha é resposta: nenhum dos três está lá.

Resultado

id data categoria resumo

Pergunta 5

As três vítimas descreveram o mesmo homem: de óculos, de chapéu e com sessenta anos ou mais, o que no fichário quer dizer nascido antes de 1943. Traga do fichário todo homem que bate com isso.

Ver as dicas do jogo
  1. Traga da tabela `pessoa` o `id`, o `nome`, o `apelido`, a `ocupacao_antiga`, o `nascimento`, a `ocupacao`, o `porte`, o `sinal` e o `bairro_id` de todo homem da cidade (`sexo` igual a 'M') que usa óculos e chapéu (`oculos` e `chapeu` iguais a 1) e nasceu antes de 1943.
  2. São quatro condições sobre a mesma ficha, todas amarradas com AND. A data de nascimento se compara como texto: menor que '1943-01-01'.
  3. Escreva: `SELECT id, nome, apelido, ocupacao_antiga, nascimento, ocupacao, porte, sinal, bairro_id FROM pessoa WHERE sexo = 'M' AND oculos = 1 AND chapeu = 1 AND nascimento < '1943-01-01';`
Ver a consulta que resolve
SELECT id, nome, apelido, ocupacao_antiga, nascimento, ocupacao, porte, sinal, bairro_id FROM pessoa WHERE sexo = 'M' AND oculos = 1 AND chapeu = 1 AND nascimento < '1943-01-01';

AND não tem limite de quantas condições: cada uma filtra um pouco mais, e só sobra quem passa por todas.

Resultado

id nome apelido ocupacao_antiga nascimento ocupacao porte sinal bairro_id
8 Ademir Falcão o Falcão 1942-11-30 dono da Viação Falcão medio 1
15 Sebastião Gouveia Seu Tião 1937-01-12 mecânico aposentado medio falta o mindinho da mão esquerda 6
27 Aristides Camargo Seu Dico leiturista da companhia de energia 1936-02-19 aposentado magro 6
28 Waldir Pizzato eletricista 1940-01-28 aposentado medio 4
30 Otacílio Brum Seu Ota carpinteiro 1922-03-11 aposentado magro 4

Quem foi

Ver o culpado e a prova

O culpado é Aristides Camargo.

As provas que fecham o caso:

  • A ficha do Seu Dico: aposentado, e antes disso leiturista da companhia de energia.

Seu Dico abriu a porta de camisa de manga comprida. Não era a camisa da companhia; era a camisa boa dele, porque tinha chovido e ele ia à missa.

Não negou. Foi buscar o crachá na gaveta da cômoda, plastificado, com a foto dele de 1991, e entregou nas suas mãos com as duas mãos, do jeito que se entrega documento. Disse que tinha guardado por lembrança. Depois disse que tinha guardado por lembrança e por precaução, e que precaução tinha ganhado em fevereiro, quando o remédio subiu.

Devolveu quatrocentos e vinte reais, que era tudo o que tinha, e ficou devendo o resto.

Dona Sirlei fez o termo e não falou nada, o que é raro nela. Quando o Seu Dico já tinha saído, ela disse para a parede: a gente não sabe o que uma pessoa faz quando fica sem saída. Seu Jaime concordou sem levantar a cabeça.