Capítulo 10: Filtros Avançados, Operadores Especiais e Ordenação SQL

🎯 Objetivo da Aula

Nesta aula, você expandirá seu vocabulário na linguagem SQL, aprendendo a criar filtros analíticos sofisticados e relatórios perfeitamente ordenados. No laboratório de informática, você dominará os operadores corporativos mais utilizados no mercado: o operador de busca textual LIKE com caracteres coringa, o operador de pertinência a conjuntos IN, a filtragem por faixa de valores BETWEEN ... AND ... e a detecção de valores em branco com IS NULL. Você aprenderá também a ordenar resultados com ORDER BY e a projetar Colunas Calculadas com apelidos amigáveis (AS).

Ao final desta aula, você será capaz de construir consultas analíticas completas para a FastLog S.A., simulando tributos (ICMS), calculando taxas de seguro em tempo de execução e organizando rankings de clientes.


🏢 Cenário Prático (FastLog S.A.)

Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: O diretor comercial precisava de um relatório urgente para fechar as metas trimestrais: ele queria listar todos os clientes das regiões Sul e Sudeste cujos fretes tenham sido despachados no mês de setembro com peso entre 10 e 30 toneladas, ordenados do maior faturamento para o menor. Além disso, a contabilidade exigia que a consulta exibisse o cálculo estimado do ICMS (12% sobre o frete) e da taxa de gerenciamento de risco (GRIS - 0,3%). Na tentativa de montar isso no Excel, o analista fez 6 etapas manuais de filtros, copiou fórmulas erradas e entregou os números com 3 dias de atraso na reunião de acionistas.
Sua Missão: Como analista de Business Intelligence (BI) e SQL, você construirá uma única consulta SQL declarativa que calcula os impostos, filtra as faixas de peso e ordena o faturamento em 0,03 segundo, pronta para exportação direta para a diretoria.


🧠 Fundamentos: A Teoria Traduzida

1. Operadores de Busca Textual e Conjuntos

flowchart TD
    subgraph OPERADORES["Operadores Especiais em SQL"]
        OP1["LIKE 'S*' ➔ Textos que iniciam com 'S' (São Paulo, Santos)"]
        OP2["IN ('SP', 'PR', 'SC') ➔ Pertencimento a uma lista fechada"]
        OP3["BETWEEN 10000 AND 30000 ➔ Faixa contínua (Peso de 10t a 30t)"]
        OP4["IS NULL ➔ Detecta ausência de dados (Sem data de entrega)"]
    end

    style OPERADORES fill:#f8f9fa,stroke:#0056b3,stroke-width:2px
    style OP1 fill:#d1ecf1,stroke:#0c5460,stroke-width:1px,color:#0c5460
    style OP2 fill:#d4edda,stroke:#155724,stroke-width:1px,color:#155724
    style OP3 fill:#fff3cd,stroke:#856404,stroke-width:1px,color:#856404
    style OP4 fill:#f8d7da,stroke:#721c24,stroke-width:1px,color:#721c24
  • Operador LIKE (Busca por Padrão):
    • No Access tradicional (interface gráfica), o caractere coringa para “qualquer quantidade de caracteres” é o asterisco * (no padrão ANSI puro de servidores web é %).
    • Exemplo: WHERE Razao_Social LIKE 'Trans*' localiza “Transportadora Rápida”, “Translog”, “Transcontinental”.
    • Exemplo: WHERE Placa LIKE '???1*' localiza qualquer placa Mercosul cujo 4º caractere seja o número 1.
  • Operador IN (Substituindo múltiplos OR):
    • Em vez de digitar o cansativo WHERE UF = 'SP' OR UF = 'RJ' OR UF = 'MG' OR UF = 'PR', você escreve de forma limpa e profissional:
      1
      
      WHERE UF IN ('SP', 'RJ', 'MG', 'PR')
  • Operador BETWEEN ... AND ... (Intervalos Fechados):
    • Retorna valores inclusivos: WHERE Data_Despacho BETWEEN #01/09/2026# AND #30/09/2026#.

2. A Cláusula de Ordenação: ORDER BY

Permite organizar as linhas retornadas pela consulta:

  • ASC (Padrão): Ordem Crescente (A $\to$ Z, 0 $\to$ 9, datas mais antigas para mais recentes).
  • DESC: Ordem Decrescente (Z $\to$ A, 9 $\to$ 0, maiores valores para os menores).
  • Ordenação Multinível: Podemos ordenar por mais de uma coluna separadas por vírgula:
    1
    
    ORDER BY UF_Destino ASC, Valor_Frete DESC
    (Organiza primeiro por Estado em ordem alfabética; dentro de cada Estado, lista do frete mais caro para o mais barato!).

3. Colunas Calculadas e Aliases (AS)

O SQL permite que você realize operações matemáticas diretamente na projeção do SELECT. Como a coluna resultante não existe fisicamente na tabela, usamos a palavra-chave AS para batizá-la com um apelido (Alias):

1
2
SELECT ID_OrdemFrete, Valor_Frete, (Valor_Frete * 0.12) AS Imposto_ICMS
FROM tbl_OrdensFrete;

📖 Exemplo Guiado: Passo a Passo no Laboratório

Abra o arquivo FastLog_Database.accdb. Vamos criar uma nova consulta no Modo SQL.

Passo 1: Abrindo a Consulta em Modo SQL

  1. Acesse Criar ➔ Design da Consulta.
  2. Feche o painel lateral Adicionar Tabelas.
  3. Clique no botão Modo SQL no canto superior esquerdo.
  4. Apague o texto existente.

🛠️ Prática Obrigatória 1: Busca por Padrão de Nome com LIKE e ORDER BY

Você criará uma ferramenta de busca para o SAC da FastLog localizar clientes cujo nome comece com determinada letra ou contenha palavras-chave como “Logística” ou “Indústria”.

Passo a Passo no Computador:

  1. No editor SQL, digite o seguinte comando:
    1
    2
    3
    4
    
    SELECT ID_Cliente, Razao_Social, Cidade, UF, Limite_Credito
    FROM tbl_Clientes
    WHERE UF IN ('SP', 'PR', 'RJ', 'SC')
    ORDER BY UF ASC, Razao_Social ASC;
  2. Clique no botão com a exclamação vermelha ! Executar.
  3. Observe que o Access organiza os clientes agrupados primeiro por Estado (PR, RJ, SC, SP) e, dentro de cada Estado, em ordem alfabética estrita de Razão Social.
  4. Volte ao Modo SQL e adicione um filtro com LIKE:
    1
    2
    3
    4
    5
    
    SELECT ID_Cliente, Razao_Social, Cidade, UF, Limite_Credito
    FROM tbl_Clientes
    WHERE UF IN ('SP', 'PR', 'RJ', 'SC') 
      AND Razao_Social LIKE '*Alvorada*'
    ORDER BY Razao_Social ASC;
  5. Execute a consulta e veja que ela localiza instantaneamente o cliente independente se a palavra “Alvorada” está no início, meio ou fim do nome!
  6. Salve a consulta como: qry_FiltroClientesRegional.

✅ Resultado Esperado (Prática 1):

A consulta demonstra o poder dos operadores IN e LIKE, permitindo buscas textuais flexíveis e ordenadas por múltiplos critérios.


🛠️ Prática Obrigatória 2: Consulta Analítica com Cálculos Tributários e Aliases (AS)

Agora você construirá o relatório tributário solicitado pela diretoria financeira da FastLog.

Passo a Passo no Computador:

  1. Acesse Criar ➔ Design da Consulta ➔ Modo SQL.
  2. Digite a consulta corporativa abaixo, contendo cálculos de impostos e ordenação por faturamento:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    SELECT 
        ID_OrdemFrete AS [Código do Frete],
        Data_Despacho AS [Data de Envio],
        Peso_Liquido_Kg AS [Peso Líquido (Kg)],
        Valor_Frete AS [Valor Bruto (R$)],
        (Valor_Frete * 0.12) AS [ICMS Estimado (12%)],
        (Valor_Frete * 0.003) AS [Taxa GRIS Risco (0,3%)],
        (Valor_Frete - (Valor_Frete * 0.12) - (Valor_Frete * 0.003)) AS [Receita Líquida (R$)]
    FROM tbl_OrdensFrete
    WHERE Peso_Liquido_Kg BETWEEN 10000 AND 35000
    ORDER BY Valor_Frete DESC;
  3. Clique em ! Executar.
  4. Análise dos Resultados na Tela:
    • Observe os títulos das colunas: em vez dos nomes técnicos de banco (ID_OrdemFrete), a grade exibe títulos executivos amigáveis como [Código do Frete] e [Receita Líquida (R$)].
    • As colunas ICMS Estimado, Taxa GRIS e Receita Líquida foram calculadas em tempo de execução para cada linha pelo processador sem que você precisasse criar novos campos físicos na tabela!
    • A lista está perfeitamente ordenada do frete mais lucrativo para o menor.
  5. Salve a consulta como: qry_AnaliseTributariaFretes.

✅ Resultado Esperado (Prática 2):

A consulta gera um relatório executivo pronto para a diretoria, calculando impostos e receitas líquidas de forma dinâmica e instantânea.


📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o banco de dados e feche o Access.
  2. Nomeie o arquivo: FastLog_BD_Cap10_SeuNome_SeuSobrenome.accdb.
  3. Acesse o Microsoft Teams na sua turma técnica.
  4. Abra a tarefa: “Banco de Dados - Cap 10: Operadores Avançados e Ordenação SQL”.
  5. Anexe o seu arquivo .accdb e conclua o envio clicando em Entregar (Turn In).

💡 Checkpoint de Gestão & TI

Por que o uso de Colunas Calculadas no SQL é considerado uma prática de engenharia de software de classe mundial? Porque evita o armazenamento de dados redundantes! Se você criasse colunas físicas na tabela para guardar o valor do ICMS ou da Receita Líquida, e amanhã a alíquota tributária mudasse de 12% para 14%, todos os dados do passado ficariam corrompidos. Ao calcular em tempo de consulta (SELECT), os números são sempre atualizados e matematicamente exatos.


🔥 Desafio de Fixação: Auditoria de Entregas Pendentes com IS NULL

Na gestão de transportes, uma ordem de frete que já foi despachada mas que ainda não possui Data_Entrega_Realizada registrada é considerada uma Carga em Rota ou Atrasada.

Escreva uma consulta SQL no Access que atenda aos seguintes requisitos:

  1. Selecione os campos ID_OrdemFrete, Data_Despacho, Valor_Frete e Status_Ordem.
  2. Adicione uma coluna calculada: (Valor_Frete * 0.05) AS [Multa_Atraso_Prevista].
  3. Filtre cargas cujo frete seja maior que R$ 10.000,00 E cuja data de entrega esteja vazia (IS NULL), ou cujo status seja diferente de 'Entregue'.
  4. Ordene os resultados da data de despacho mais antiga para a mais recente (ASC).
  5. Salve com o nome: qry_AuditoriaCargasPendentes.

🔑 Revelar Gabarito Oficial e Material de Apoio da Aula (Clique para expandir)
💡 Incentivo Pedagógico: Tente resolver as práticas e o desafio de fixação por conta própria antes de abrir o gabarito. Seus erros e tentativas durante o laboratório são a chave para a consolidação real do aprendizado!

Código SQL Oficial do Desafio de Fixação:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
SELECT 
    ID_OrdemFrete,
    Data_Despacho,
    Valor_Frete,
    Status_Ordem,
    (Valor_Frete * 0.05) AS Multa_Atraso_Prevista
FROM tbl_OrdensFrete
WHERE Valor_Frete > 10000 
  AND Status_Ordem <> 'Entregue'
ORDER BY Data_Despacho ASC;

📥 Download dos Scripts desta Aula:
Baixe o arquivo de script Capitulo_10.sql ou o pacote compactado (.zip) com os comandos SQL e esquemas da aula.


📝 Atividade Extra: Questionário de Fixação (Caderno)

Instruções: Responda no caderno, de próprio punho, as 10 perguntas reflexivas abaixo com base no conteúdo deste capítulo. Ao concluir, apresente o caderno ao professor para conferência e visto.

  1. Qual é a função do operador LIKE em uma instrução SQL e em que situações corporativas ele é utilizado?
  2. No Microsoft Access nativo, qual é o caractere coringa utilizado para substituir qualquer número de caracteres em uma busca textual?
  3. Como o operador IN otimiza e simplifica a escrita de consultas que dependem de múltiplos testes com o operador lógico OR?
  4. Explique como funciona o operador BETWEEN ... AND ... e mencione dois exemplos de dados logísticos ideais para ele.
  5. Para que serve o operador IS NULL e por que não devemos usar a comparação = '' (aspas vazias) para verificar ausência de dados em SGBDs?
  6. Qual é a finalidade da cláusula ORDER BY e qual é a diferença entre os modificadores ASC e DESC?
  7. Como configuramos uma ordenação multinível com múltiplos critérios no comando ORDER BY?
  8. O que é um Alias (Apelido de Coluna) no SQL e qual palavra-chave utilizamos para defini-lo?
  9. Por que quando o apelido de uma coluna contém espaços ou caracteres especiais (como acentos e parênteses) devemos colocá-lo entre colchetes [ ]?
  10. No Desafio de Fixação, qual é a vantagem gerencial de ordenar as cargas pendentes com ORDER BY Data_Despacho ASC (da mais antiga para a mais recente)?