Frågebearbetningsordning

Introduktion till Oracle SQL

Hadrien Lacroix

Content Developer

Varför spelar bearbetningsordningen roll?

  • Optimera dina frågor
    • Inga oönskade resultat
    • Snabbare körning
Introduktion till Oracle SQL

Exempel

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

Exempel

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

Exempel

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

Exempel

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

Exempel

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

Exempel

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

Exempel

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

Vad kan gå fel?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Alias kan inte användas i WHERE, GROUP BY och HAVING
  • Alias kan användas i ORDER BY
Introduktion till Oracle SQL

Vad kan gå fel?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Aggregerade värden kan inte filtreras i WHERE-satsen
  • Aggregerade värden kan filtreras i HAVING-satsen
Introduktion till Oracle SQL

Vad kan gå fel?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100)
ORDER BY Average DESC
  • Enskilda rader kan inte filtreras i HAVING-satsen
  • Enskilda rader kan filtreras i WHERE-satsen
Introduktion till Oracle SQL

Frågans körordning

  1. FROM och JOIN: avgör vilka data som frågas

  2. WHERE: filtrera enskilda rader

  3. GROUP BY: gruppera rader

  4. HAVING: filtrera grupper

  5. SELECT: välj kolumner och tillämpa funktioner

  6. DISTINCT: ta bort dubbletter

  7. UNION, UNION ALL, INTERSECT, MINUS: tillämpa mängdoperatorer

  8. ORDER BY: sortera rader

Introduktion till Oracle SQL

Nu kör vi en övning!

Introduktion till Oracle SQL

Preparing Video For Download...