あなたは2つの質問をします:
1。
WHERE句でSELECTコストエイリアスを参照できないのはなぜですか?
2.
しかし、なぜコストの説明で注文するのか。許可されていますか?
マニュアルには、両方の答えがここにあります:
出力列の名前を使用して、
ORDER BYの列の値を参照できます。 およびGROUP BY句はありますが、WHEREにはありません またはHAVING条項;そこで、代わりに式を書き出す必要があります。
SQL標準によって定義されています その理由は、SELECTの一連のイベントです。 クエリ。当時のWHERE 句が適用され、SELECTの列が出力されます リストはまだ計算されていません。しかし、ORDER BYに関しては 、出力列はすぐに利用できます。
したがって、これは最初は不便で混乱を招きますが、それでもある程度は理にかなっています。
関連:
- PostgreSQLのカウント条件
- LIMITが適用される前に結果カウントを取得するための最良の方法