Abfragen vereinfachen, WITH-Schlüsselwort
Teil des Abschnitts Grundlagen der SQL-Journey von Coddy. Lektion 49 von 72.
Abfragen können durch das Hinzufügen vieler innerer Abfragen zu unübersichtlich werden. Hier ist zum Beispiel eine Abfrage mit vielen Unterabfragen:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)Um es einfacher zu machen, können wir das Schlüsselwort WITH query_name AS (...) verwenden. Damit können wir eine Abfrage unter einem Namen speichern und sie überall dort verwenden, wo wir möchten:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN (SELECT col1 FROM query2) AND col4 IN (SELECT col5 FROM query1)Hier haben wir query1 in query2 und in der Hauptabfrage wiederverwendet.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
devices_specs:device_id,width,height,num_features,opiniondevices_score:device_id,score
Schreibe eine Abfrage, die:
- Zuerst „große Geräte“ identifiziert (Geräte mit einer
widthgrößer als 200) - Anschließend den durchschnittlichen Score für diese großen Geräte berechnet. Nenne diese Spalte
average_score
Verwende die WITH-Klausel, um dieses Problem zu lösen.
Probier es selbst
-- Schritt 1: benenne eine temporäre Ergebnismenge, die nur die Geräte behält, die dich interessieren
WITH large_devices AS (
SELECT ____
FROM devices_specs
WHERE ____
)
-- Schritt 2: verwende diese temporäre Ergebnismenge in der Hauptabfrage erneut
SELECT ____ AS average_score
FROM devices_score
WHERE device_id IN (____);Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Weitere Schlüsselwörter
Das IN-SchlüsselwortDas BETWEEN-SchlüsselwortDas LIKE-SchlüsselwortDas AS-SchlüsselwortRückblick – Handymodelle7Datumsangaben
Datumsangaben behandeln – Teil 1Datumsangaben behandeln – Teil 2Datumsangaben behandeln – Teil 32Bedingungen
Grundlagen der BedingungenDas Schlüsselwort ANDDas Schlüsselwort ORDas Schlüsselwort NOTMehrere kombinierte BedingungenKlammernBoolesche Werte5Arithmetische Operationen
Mathematische OperatorenMathematische SpaltenDie Modulo-OperationDie ROUND()-Funktion3Spezifisches Rückgabeformat
NULL-WerteErgebnisse sortieren Teil 1Ergebnisse sortieren Teil 2Zusammenfassung - Cyber Security FirmAnzahl der Datensätze begrenzenZusammenfassung - Vehicle Factory6Einführungsaufgaben
Wiederholung – ParlamentswahlWiederholung – Festnahme eines Straftäters durch die PolizeiWiederholung – Getränkebehälter an der BarWiederholung – Neue Spalten erstellen9Mehrere Tabellen
Grundlegender Join Teil 1Grundlegender Join Teil 2Rückblick – JoinSelf-JoinRückblick – Self-JoinUnionAbfragen vereinfachen, WITH-SchlüsselwortRückblick – WITH-AbfragenRückblick – ImmobilienauftragnehmerÜbe selbstständig: SQL-Playground