Zugriff auf Spalte alias in postgresql
Mit ein wenig Schwierigkeiten zu verstehen, wie eine Abfrage alias funktioniert in postgresql.
Ich habe Folgendes:
SELECT DISTINCT robber.robberid,
nickname,
Count(accomplices.robberid) AS count1
FROM robber
INNER JOIN accomplices
ON accomplices.robberid = robber.robberid
GROUP BY robber.robberid,
robber.nickname
ORDER BY Count(accomplices.robberid) DESC;
robberid | nickname | count1
----------+--------------------------------+--------
14 | Boo Boo Hoff | 7
15 | King Solomon | 7
16 | Bugsy Siegel | 7
23 | Sonny Genovese | 6
1 | Al Capone | 5
...
Kann ich benennen Sie die "count1" Spalte mit dem Befehl " aber ich kann nicht scheinen, um in der Lage zu finden diese wieder in der Abfrage? Ich bin versucht, umfassen eine HAVING-Befehl am Ende diese Abfrage zu Abfrage nur Objekte, die eine Zählung weniger als die Hälfte der max.
Dies ist Hausaufgaben, aber ich bin nicht zu Fragen, für die Antwort nur einen Zeiger auf, wie ich kann die count1 Spalte in einer anderen Klausel.
Kann jemand helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Allgemeinen, Sie können nicht beziehen sich auf ein Aggregat-Spalte alias, die später in der Abfrage, und Sie haben zu wiederholen, das Aggregat
Wenn Sie wirklich wollen, Ihren Namen zu verwenden, könnten Sie wickeln Sie Ihre Abfrage als Unterabfrage
SELECT
Aliase später in der Abfrage, wie in derWHERE
- Klausel, es ist alles zu tun mit der Reihenfolge der Auswertung. SQL ist nicht in der Reihenfolge ausgewertet, es ist geschrieben. DieSELECT
-Liste ist tatsächlich bewertet fast die letzten, und Ihre Inhalte effektiv noch nicht existieren, wennHAVING
etc verarbeitet werden. Dies ist wichtig, wenn die select-Liste enthält Funktionen, mit Nebenwirkungen; Sie sollten nur ausgeführt werden, wenn dieWHERE
- Klausel abgestimmt.