SQLを学習するうえでこの処理の流れを意識しながら
学習すると覚えやすかったので、もし誰かの一助に慣れればと思い投稿しました。
まず句の記述順序ですが
SELECT ○○ FROM テーブル名 WHERE 条件 GROUP BY 集約キー HAVING 条件 ORDER BY ソートキー;
このように記述をすると決まっています。
SELECT句には表示用に別名をつけることが出来る機能(AS)があるのですが
この別名をGROUP BYには使うことが出来ません。
しかし、ORDER BYには使うことが出来ます。
上の記述を見るだけだと理由は分かりにくいのですが、内部の処理を意識しながら
見てみると非常にわかりやすいです。
SQLの処理は下記①〜⑥の順番に行われています。
①FROM・・・・・・・・テーブルから参照
②WHERE ・・・・・・・選択する行の条件を設定
③GROUP BY・・・・・・グループごとに集約
④HAVING ・・・・・・・グループに集約した結果に対して条件指定
⑤SELECT ・・・・・・・出力する列の名前
⑥ORDER BY・・・・・・検索結果を並べ替える
この処理の順番を意識しながら考えて見ましょう。
別名をつける機能(AS)は⑤番目で行われていますが、
GROUP BYは③番目で行われており別名が付けられる前に処理が終わってしまっています。
今度はORDER BYを見てみると⑥番目での処理になっているので
別名を付けてからの処理になっているので別名を使うことが出来るんですね。
プログラミング学習は暗記しようとしてはいけないというのはその通りなのですが
こういった基本的な処理の流れは覚えておくと覚えやすそうですね。
(覚えずにググるとしても、処理の流れも意識すると良いさそうですね)