Die beiden Versionen sind funktional gleich. Nun, die zweite ist syntaktisch falsch, aber ich nehme an, Sie meinen:
%Vor% (Sie benötigen den Alias für die Berechnung und mehrere führende Datenbanken erfordern einen Alias für eine Unterabfrage in einer FROM
-Klausel.)
Funktional äquivalent bedeutet nicht , dass sie notwendigerweise auf die gleiche Weise optimiert sind. Es gibt häufig mehrere Möglichkeiten, eine Abfrage zu schreiben, die funktional äquivalent ist. Die spezifische Datenbank-Engine / der Optimierer kann jedoch verschiedene Optimierungspfade auswählen (und wählt oft auch).
In diesem Fall ist die Abfrage so einfach, dass es schwierig ist, sich mehrere Optimierungspfade vorzustellen. Bei beiden Versionen muss die Engine im Grunde die Abfrage aggregieren und dann die zweite Spalte für den Filter testen. Ich persönlich kann viele Variationen zu diesem Thema nicht sehen. Jede anständige SQL-Engine sollte gegebenenfalls Indizes in beiden Fällen oder gar nicht verwenden.
Also lautet die Antwort auf diese spezielle Frage, dass diese in jeder angemessenen Datenbank zu demselben Ausführungsplan führen sollten (d. h. bei der Verwendung von Indizes, dem Benutzer der Parallelität und der Wahl des Aggregationsalgorithmus). Funktional äquivalent zu sein bedeutet jedoch nicht, dass eine bestimmte Datenbank-Engine denselben Ausführungsplan erzeugt. Also, die allgemeine Antwort ist "Nein".