Saphir: GROUP BY mit HAVING

Hallo,

ich bin verwirrt bei folgenden Abfragen.

7.Finden Sie alle Kunden, die mehr als 15 Bestellungen aufgegeben haben (Anzeige: Kunden-Code, Anz_Best, sort. nach Anz_Best)

SELECT `Kunden-Code`, COUNT(`Kunden-Code`) AS Anz_Best  
FROM `tblbestellungen`  
GROUP BY `Kunden-Code`  
HAVING Anz_Best>15  
ORDER BY Anz_Best;

9.Finden Sie aus der Tabelle tblKunden alle Länder in denen mindestens 10 Kunden vor-kommen. (Anzeige: Land, Anzahl_Kunden)

SELECT Land, Count(Land) AS Anzahl_Kunden  
FROM tblkunden  
GROUP BY Land  
HAVING COUNT(Land) >= 10  

Wieso wird bei der Aufgabe in der HAVING Klausel Anz_Best > 15 geschrieben und bei der Aufgabe 9 COUNT(Land)??

Oder anders formuliert: Wieso wird in der Aufgabe 9 COUNT(Land) praktisch 2 mal geschrieben? Könnte ich da nicht HAVING Anzahl_Kunden schreiben so wie bei Aufgabe 7?

  1. Hallo,

    Wieso wird bei der Aufgabe in der HAVING Klausel Anz_Best > 15 geschrieben und bei der Aufgabe 9 COUNT(Land)??

    weil das verwendete Datenbankmanagement (DBMS) in der HAVING-Klausel Aliasnamen unterstützt.

    Oder anders formuliert: Wieso wird in der Aufgabe 9 COUNT(Land) praktisch 2 mal geschrieben? Könnte ich da nicht HAVING Anzahl_Kunden schreiben so wie bei Aufgabe 7?

    im gleichen DBMS: ja.

    Der SQL-Standard erlaubt in der HAVING-Klausel keine Aliasnamen, wenn ich mich recht erinnere, und viele DBMS halten sich daran. In solchen DBMS wirft ein Statement wie in Aufgabe 7 einfach einen Syntaxfehler.

    Freundliche Grüße

    Vinzenz