Ordem de processamento da consulta

Introdução ao Oracle SQL

Hadrien Lacroix

Content Developer

Por que a ordem de processamento importa?

  • Otimize suas consultas
    • Sem resultados indesejados
    • Execução mais rápida
Introdução ao Oracle SQL

Exemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introdução ao Oracle SQL

Exemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
->  FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introdução ao Oracle SQL

Exemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
->  WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introdução ao Oracle SQL

Exemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
->  GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introdução ao Oracle SQL

Exemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
->  HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introdução ao Oracle SQL

Exemplo

->  SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introdução ao Oracle SQL

Exemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
->  ORDER BY Average DESC
Introdução ao Oracle SQL

O que pode dar errado?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Apelidos não podem ser usados em WHERE, GROUP BY e HAVING
  • Apelidos podem ser usados em ORDER BY
Introdução ao Oracle SQL

O que pode dar errado?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Valores agregados não podem ser filtrados na cláusula WHERE
  • Valores agregados podem ser filtrados na cláusula HAVING
Introdução ao Oracle SQL

O que pode dar errado?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100)
ORDER BY Average DESC
  • Linhas individuais não podem ser filtradas na cláusula HAVING
  • Linhas individuais podem ser filtradas na cláusula WHERE
Introdução ao Oracle SQL

Ordem de execução da consulta

  1. FROM e JOINs: definem quais dados serão consultados

  2. WHERE: filtra linhas individuais

  3. GROUP BY: agrupa linhas

  4. HAVING: filtra grupos

  5. SELECT: seleciona colunas e aplica funções nas colunas

  6. DISTINCT: remove duplicatas

  7. UNION, UNION ALL, INTERSECT, MINUS: aplicam operadores de conjunto

  8. ORDER BY: ordena linhas

Introdução ao Oracle SQL

Vamos praticar!

Introdução ao Oracle SQL

Preparing Video For Download...