Orden de procesamiento de consultas

Introducción a Oracle SQL

Hadrien Lacroix

Content Developer

¿Por qué importa el orden de procesamiento?

  • Optimiza tus consultas
    • Sin resultados no deseados
    • Ejecución más rápida
Introducción a Oracle SQL

Ejemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducción a Oracle SQL

Ejemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
->  FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducción a Oracle SQL

Ejemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
->  WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducción a Oracle SQL

Ejemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
->  GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducción a Oracle SQL

Ejemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
->  HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducción a Oracle SQL

Ejemplo

->  SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducción a Oracle SQL

Ejemplo

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
->  ORDER BY Average DESC
Introducción a Oracle SQL

¿Qué puede fallar?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Los alias no se pueden usar en WHERE, GROUP BY ni HAVING
  • Los alias se pueden usar en ORDER BY
Introducción a Oracle SQL

¿Qué puede fallar?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Los valores agregados no se pueden filtrar en WHERE
  • Los valores agregados se pueden filtrar en HAVING
Introducción a Oracle SQL

¿Qué puede fallar?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100)
ORDER BY Average DESC
  • Las filas individuales no se pueden filtrar en HAVING
  • Las filas individuales se pueden filtrar en WHERE
Introducción a Oracle SQL

Orden de ejecución de la consulta

  1. FROM y JOIN: determinan qué datos se consultan

  2. WHERE: filtra filas individuales

  3. GROUP BY: agrupa filas

  4. HAVING: filtra grupos

  5. SELECT: selecciona columnas y aplica funciones a columnas

  6. DISTINCT: elimina duplicados

  7. UNION, UNION ALL, INTERSECT, MINUS: aplican operadores de conjuntos

  8. ORDER BY: ordena filas

Introducción a Oracle SQL

¡Vamos a practicar!

Introducción a Oracle SQL

Preparing Video For Download...