Zadajesz dwa pytania:
1.
Dlaczego nie mogę odwołać się do aliasu kosztów SELECT w klauzuli WHERE?
2.
Ale po co zamawiać według kosztu; jest dozwolone?
W instrukcji znajdziesz odpowiedź na oba z nich:
Nazwa kolumny wyjściowej może być używana do odwoływania się do wartości kolumny w ORDER BY i GROUP BY klauzul, ale nie w WHERE lub HAVING klauzule; tam musisz zamiast tego napisać wyrażenie.
Jest zdefiniowany przez standard SQL a powodem jest kolejność zdarzeń w SELECT zapytanie. W tym czasie WHERE klauzule są stosowane, kolumny wyjściowe w SELECT lista nie została jeszcze obliczona. Ale jeśli chodzi o ORDER BY , kolumny wyjściowe są łatwo dostępne.
Więc chociaż na początku jest to niewygodne i mylące, to nadal ma sens.
Powiązane:
- PostgreSQL Warunek gdzie zliczanie
- Najlepszy sposób na uzyskanie liczby wyników przed zastosowaniem LIMITu