Soluções da Delegacia SQL

Inquérito 006, "Entre sete e nove": solução passo a passo

O boletim

Na quinta-feira, 26 de junho, a Escola Herculano Braga fez a reunião pedagógica de toda última quinta-feira do mês, das sete às nove da noite, e a cidade inteira sabe do horário porque está pregado no portão desde 1994.

Dona Rute Beltrão, cinquenta e quatro anos, professora há trinta e um, saiu de casa às seis e quarenta e voltou às nove e vinte. A porta dos fundos estava aberta, sem nenhuma marca. Levaram uma televisão de catorze polegadas, um rádio e duzentos e vinte reais que estavam num envelope na gaveta da cozinha, dinheiro da excursão da sexta série.

Ocorrência 235, categoria furto. Não houve arrombamento: a casa foi aberta.

A chave fica embaixo do vaso da varanda desde 1978. Dona Rute já contou isso, em trinta e um anos de sala de aula, para um número de pessoas que ela mesma não consegue estimar.

A chefia quer saber quem esteve naquela rua entre sete e nove da noite.

O que o caso ensina: BETWEEN.

Pergunta 1

A reunião da escola foi na quinta, 26 de junho de 2003, das sete às nove da noite. Traga todo chamado do 190 dessas duas horas, contando as duas pontas.

Ver as dicas do jogo
  1. A reunião da escola foi na quinta, 26 de junho de 2003, das sete às nove da noite. Traga da tabela `chamado` o `momento`, o `telefone`, o `lugar_informado` e o `resumo` de cada chamado dessas duas horas, contando as duas pontas.
  2. 'De tal a tal' numa palavra só: BETWEEN, com data e hora nas duas pontas, '2003-06-26 19:00' e '2003-06-26 21:00'.
  3. Escreva: `SELECT momento, telefone, lugar_informado, resumo FROM chamado WHERE momento BETWEEN '2003-06-26 19:00' AND '2003-06-26 21:00';`
Ver a consulta que resolve
SELECT momento, telefone, lugar_informado, resumo FROM chamado WHERE momento BETWEEN '2003-06-26 19:00' AND '2003-06-26 21:00';

BETWEEN pega tudo o que está entre duas pontas, incluindo as duas: é o 'de tal a tal' numa palavra só. Data e hora aqui são texto, e texto no formato ano-mês-dia hora-e-minuto se compara igualzinho ao relógio.

Resultado

momento telefone lugar_informado resumo
2003-06-26 19:38 3452-2743 Vila Aurora Som alto em festa de aniversário na rua 9
2003-06-26 20:12 3452-1955 Centro Moto com escapamento aberto parada na rua, com o motor desligado, faz meia hora
2003-06-26 20:47 3452-3805 Beira da Linha Cachorro solto derrubando lixo na calçada
2003-06-26 21:00 3452-6218 Estação Vaca solta andando na rua de trás do galpão

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

O Seu Jaime quer o livro do balcão de junho de 2003: traga todo papel que entrou do primeiro ao último dia do mês.

Ver as dicas do jogo
  1. O que entrou pelo balcão em junho de 2003, do dia primeiro ao dia trinta? Traga da tabela `protocolo` o `id`, a `data`, o `tipo`, o `assunto`, o `requerente` e a `ocorrencia` de cada papel.
  2. BETWEEN na coluna `data`, de '2003-06-01' a '2003-06-30'. As duas pontas entram.
  3. Escreva: `SELECT id, data, tipo, assunto, requerente, ocorrencia FROM protocolo WHERE data BETWEEN '2003-06-01' AND '2003-06-30';`
Ver a consulta que resolve
SELECT id, data, tipo, assunto, requerente, ocorrencia FROM protocolo WHERE data BETWEEN '2003-06-01' AND '2003-06-30';

BETWEEN com duas datas pega o mês inteiro, com o primeiro e o último dia junto. A coluna ocorrencia diz que registro cada papel gerou no arquivo.

Resultado

id data tipo assunto requerente ocorrencia
378 2003-06-06 oficio Notificação do Ministério Público sobre o inquérito 14 0 0
379 2003-06-09 ocorrencia Reclamação de ruído na garagem de ônibus da Estação, de madrugada 25 230
380 2003-06-09 ocorrencia Registro de ocorrência — perturbação do sossego em residência 48 231
381 2003-06-15 ocorrencia Registro de ocorrência — furto em residência 131 232
382 2003-06-17 requisicao Requisição de exame de corpo de delito 0 0
383 2003-06-18 pedido Pedido de cópia de termo de declaração 104 0
384 2003-06-18 ocorrencia Acidente sem vítimas — Kombi escolar AJE-4477 na Estrada do Café 0 233
385 2003-06-22 certidao Pedido de certidão de antecedentes 126 0
386 2003-06-22 oficio Ofício da Secretaria de Segurança sobre escala de plantão 0 0
387 2003-06-24 requisicao Requisição do Ministério Público: remessa do inquérito 14 em 30 dias 0 0
388 2003-06-25 ocorrencia Representação do Conselho Tutelar sobre o transporte escolar 0 234
389 2003-06-26 ocorrencia Furto em residência durante a reunião pedagógica 36 235
390 2003-06-30 pedido Pedido de cópia de boletim de ocorrência 84 0

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

Agora a numeração do arquivo: traga as ocorrências de número 228 a 235, as duas pontas contando.

Ver as dicas do jogo
  1. Agora a numeração do arquivo. Traga da tabela `ocorrencia` o `id`, a `data`, a `categoria` e o `resumo` de toda ocorrência de número 228 a 235, contando os dois.
  2. BETWEEN também serve para número, na coluna `id`, e número vai sem aspas.
  3. Escreva: `SELECT id, data, categoria, resumo FROM ocorrencia WHERE id BETWEEN 228 AND 235;`
Ver a consulta que resolve
SELECT id, data, categoria, resumo FROM ocorrencia WHERE id BETWEEN 228 AND 235;

BETWEEN também funciona em número, não só em data ou hora: pega tudo entre duas pontas, incluindo as duas pontas.

Resultado

id data categoria resumo
228 2003-05-28 dano Vidro de janela quebrado com pedrada, com as partes orientadas
229 2003-06-03 outros Cachorro solto derrubando lixo na calçada, sem providência no momento
231 2003-06-09 perturbacao Discussão entre vizinhos por causa de cachorro, com testemunha ouvida no local
232 2003-06-15 furto Furto de mercadoria de dentro de veículo destrancado, sem testemunhas
235 2003-06-26 furto Casa da professora Rute Beltrão aberta e furtada durante a reunião pedagógica

Pergunta 4

Traga os depoimentos que a pergunta do Cabeção queria de verdade: todos os tomados da noite de 26 de junho até o fim do dia 27.

Ver as dicas do jogo
  1. Traga da tabela `depoimento` o `id`, a `ocorrencia_id`, o `pessoa_id`, o `momento` e o `texto` de todo depoimento tomado da noite de 26 de junho até o fim do dia 27.
  2. Leia a consulta do Cabeção de fora para dentro: a gaveta e as colunas estão certas, e o que decide é o `WHERE`. A coluna `momento` guarda a data com a hora; veja até onde vai a ponta de cima do `BETWEEN` dele.
  3. Escreva: `SELECT id, ocorrencia_id, pessoa_id, momento, texto FROM depoimento WHERE momento BETWEEN '2003-06-26' AND '2003-06-28';`
Ver a consulta que resolve
SELECT id, ocorrencia_id, pessoa_id, momento, texto FROM depoimento WHERE momento BETWEEN '2003-06-26' AND '2003-06-28';

Data sozinha também é texto, e '2003-06-26' é menor que '2003-06-26 22:10' na comparação de texto — por isso o BETWEEN pega a data inteira e as horas dela junto. Cuidado com a ponta de cima: se fosse só '2003-06-27', o BETWEEN perderia qualquer depoimento com hora marcada nesse mesmo dia, porque '2003-06-27 10:00' é maior que '2003-06-27' na comparação de texto. Por isso a ponta de cima aqui é o dia seguinte inteiro, '2003-06-28'. O número da ocorrência trazia as mesmas quatro folhas, mas a pergunta era a janela de datas, que pega também o depoimento que ainda não foi amarrado a ocorrência nenhuma.

Resultado

id ocorrencia_id pessoa_id momento texto
173 235 40 2003-06-26 22:10 tinha uma moto parada na rua com o motor desligado, vermelha, e a placa eu não vi, que a rua estava escura. O escapamento é daqueles abertos, dá para ouvir de dentro de casa.
174 235 36 2003-06-27 10:00 a porta não foi forçada, foi aberta; a chave fica embaixo do vaso da varanda e isso não é segredo para ex-aluno nenhum. Levaram a televisão, o rádio e o envelope da excursão da sexta série.
175 235 12 2003-06-27 11:20 a reunião começou às sete em ponto e terminou depois das nove. A Dona Rute ficou até o fim e foi ela que fechou a sala.
176 235 29 2003-06-27 15:40 eu moro na esquina e não vi ninguém entrar. Quando tem reunião na escola essa rua fica vazia, é o que eu posso dizer.

Pergunta 5

A vizinha viu uma moto vermelha parada na rua. Traga do arquivo todo veículo vermelho, moto ou não.

Ver as dicas do jogo
  1. A cidade tem veículo de toda cor. Traga da tabela `veiculo` o `id`, a `placa`, o `tipo`, o `modelo`, a `cor`, o `ano` e o `dono_id` de todo veículo vermelho.
  2. Uma condição de igual sobre a `cor`, com o texto entre aspas e escrito do jeito que o arquivo escreve: 'vermelha'.
  3. Escreva: `SELECT id, placa, tipo, modelo, cor, ano, dono_id FROM veiculo WHERE cor = 'vermelha';`
Ver a consulta que resolve
SELECT id, placa, tipo, modelo, cor, ano, dono_id FROM veiculo WHERE cor = 'vermelha';

Texto na condição vai entre aspas simples e tem que bater letra por letra com o que está guardado: 'vermelha' acha, 'Vermelho' não acha.

Resultado

id placa tipo modelo cor ano dono_id
2 AKB-0316 automovel Fiat Uno Mille vermelha 1997 69
9 AIG-3085 utilitario Ford F-1000 vermelha 1994 9
19 AIL-5502 motocicleta Honda CG 125 vermelha 1996 21
20 AJE-7784 caminhao Chevrolet D-60 carroceria vermelha 1987 131
28 AJH-6650 motocicleta Honda CG 125 vermelha 1998 37
31 AKB-3319 motocicleta Yamaha DT 180 vermelha 1994 38
45 AJF-3513 automovel Fiat Uno Mille vermelha 1976 114

Pergunta 6

O livro de ponto não é só da delegacia: a escola, a cooperativa e a cerealista também batem ponto. Traga todo ponto batido fora da delegacia, o lugar que o arquivo numera como 1, de 16 a 30 de junho de 2003, as duas pontas contando.

Ver as dicas do jogo
  1. O livro de ponto não é só da delegacia: a escola, a cooperativa e a cerealista também batem ponto. Traga da tabela `ponto` o `pessoa_id`, o `local_id`, a `data`, a `entrada`, a `saida` e a `situacao` de todo ponto batido fora da delegacia de 16 a 30 de junho, contando os dois dias.
  2. Duas condições com AND: `local_id` diferente de 1, que se escreve `<>`, e a `data` entre '2003-06-16' e '2003-06-30', com BETWEEN.
  3. Escreva: `SELECT pessoa_id, local_id, data, entrada, saida, situacao FROM ponto WHERE local_id <> 1 AND data BETWEEN '2003-06-16' AND '2003-06-30';`
Ver a consulta que resolve
SELECT pessoa_id, local_id, data, entrada, saida, situacao FROM ponto WHERE local_id <> 1 AND data BETWEEN '2003-06-16' AND '2003-06-30';

<> quer dizer diferente, e vale para número e para texto. Junto com um BETWEEN na data, separa um pedaço do livro sem ler o livro inteiro.

Resultado

pessoa_id local_id data entrada saida situacao
22 11 2003-06-16 07:30 17:35 normal
23 11 2003-06-16 07:30 17:35 normal
37 11 2003-06-16 07:30 18:40 normal
65 3 2003-06-16 09:05 18:11 normal
46 3 2003-06-16 08:31 17:48 normal
22 11 2003-06-17 07:30 17:35 normal
23 11 2003-06-17 07:30 17:35 normal
37 11 2003-06-17 07:30 18:40 normal
56 8 2003-06-17 18:00 plantao
22 11 2003-06-18 07:30 17:35 normal
23 11 2003-06-18 07:30 17:35 normal
37 11 2003-06-18 07:30 18:40 normal
48 3 2003-06-19 08:27 18:02 normal
146 8 2003-06-19 08:42 17:31 normal
65 3 2003-06-19 08:47 17:51 normal
22 11 2003-06-20 07:30 17:35 normal
23 11 2003-06-20 07:30 17:35 normal
37 11 2003-06-20 07:30 18:40 normal
117 8 2003-06-20 07:51 17:47 normal
22 11 2003-06-23 07:30 17:35 normal
23 11 2003-06-23 07:30 17:35 normal
37 11 2003-06-23 07:30 18:40 normal
62 8 2003-06-23 07:59 19:32 normal
46 3 2003-06-23 08:44 17:49 normal
22 11 2003-06-24 07:30 17:35 normal
23 11 2003-06-24 07:30 17:35 normal
37 11 2003-06-24 07:30 18:40 normal
46 3 2003-06-24 falta
62 8 2003-06-24 08:44 17:58 normal
22 11 2003-06-25 07:30 17:35 normal
23 11 2003-06-25 07:30 17:35 normal
37 11 2003-06-25 07:30 18:40 normal
48 3 2003-06-25 08:26 17:45 normal
22 11 2003-06-26 07:30 17:35 normal
23 11 2003-06-26 07:30 17:35 normal
37 11 2003-06-26 07:30 17:35 normal
117 8 2003-06-26 08:14 17:34 normal
22 11 2003-06-27 07:30 17:35 normal
23 11 2003-06-27 07:30 17:35 normal
37 11 2003-06-27 07:30 18:40 normal
22 11 2003-06-30 07:30 17:35 normal
23 11 2003-06-30 07:30 17:35 normal
37 11 2003-06-30 07:30 18:40 normal

Quem foi

Ver o culpado e a prova

O culpado é Adilson Queiroz.

As provas que fecham o caso:

  • O Seu Aldo disse ao telefone que o Didi fica fechando a balança até as seis e quarenta, todo santo dia. No dia 26, o ponto do Didi marca a saída às 17h35.
  • O ponto do Didi em 25 e 26 de junho: na véspera saiu às 18h40, como sempre; no dia do furto, às 17h35.
  • O ponto do Didi em 26 e 27 de junho: no dia do furto saiu às 17h35; no dia seguinte, às 18h40, como sempre.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 16 de junho, às 18h40, como em todos os outros dias da quinzena.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 17 de junho, às 18h40, como em todos os outros dias da quinzena.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 18 de junho, às 18h40, como em todos os outros dias da quinzena.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 20 de junho, às 18h40, como em todos os outros dias da quinzena.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 23 de junho, às 18h40, como em todos os outros dias da quinzena.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 24 de junho, às 18h40, como em todos os outros dias da quinzena.
  • O ponto do Didi em 26 de junho saiu às 17h35; em 30 de junho, às 18h40, como em todos os outros dias da quinzena.

A televisão estava na casa da avó do Didi, ligada, com a avó assistindo. Ele tinha dito que era da firma, por conta do salário.

Dona Rute foi até a delegacia e pediu para falar com ele. Não deixaram, e ela falou assim mesmo, do corredor, uma coisa curta: eu me lembro de você. Dona Sirlei ofereceu café a ela, e ela tomou em pé.

Ele devolveu cento e oitenta dos duzentos e vinte reais. Os quarenta tinham ido na prestação da moto.

Seu Jaime datilografou tudo, carimbou e ficou. Quando a sala esvaziou, ele pediu para você ler de novo os três números que faltavam entre duzentos e vinte e oito e duzentos e trinta e cinco. Você leu. Ele anotou os três no caderno, ficou olhando o total e disse para você guardar aquela página na pasta que sai da delegacia, e não na gaveta que fica.