Skip to main content

SQL - DQL

Demo

SELECT a, b AS c, avg(d), 1000
    FROM f NATURAL JOIN g JOIN h ON g.a = g.h
    WHERE Name LIKE '%u%' AND NOT (Name LIKE 't%' OR Name LIKE '%t')
    GROUP BY a, c
    HAVING sum(e) > 1234
UNION (
    SELECT DISTINCT i
        FROM j JOIN k USING l LEFT JOIN m
    )
LIMIT 5678;
SELECT (SELECT COUNT(∗)∗1.0 FROM Training) / (SELECT COUNT (∗) FROM Benutzer) AS FOO;

Bemerkenswert

  • bei GROUP BY müssen alle selektierten Attribute, die nicht durch eine Aggregatfunktion gejagt werden, in der GROUP BY-Klausel stehen
  • LIKE vergleicht den ganzen string, aber % ist eine Wildcart, also basically .*
  • HAVING erlaubt quasi WHEN mit Aggregatfunktionen über GROUP BY-Mengen
  • SubSELECTs nach UNION oder EXCEPT kommen in Klammern
  • RIGHT bzw. LEFT JOIN geben alle Tupel der spezifizierten Seite aus und ergänzen diese mit Daten der anderen Seite falls vorhanden
  • nach COUNT kommt idR `(*)
  • cast to float zum Teilen mit *1.0