SQL文は複雑な処理になってくると文章が長くなってきます。
SQL文は記載する順番にルールがあります。
SQL文の記載順序
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
SQL文の実行順序
SQLは書かれている順番に実行されるわけではありません。
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
SELECT文とORDER BY句が後ろに回っている以外は記載順番通りです。
しかしSELECT文がこの位置にあることで思わぬエラーに遭遇することがあります。
上記で実行したSQL文のHaving句の条件をSELECT文で指定した別名を記入しました。
SELECT文で指定した別名を指定しているだけなので問題なく動く気がしますが、実際には下記のようなエラーが出来ます。
これはHaving句を実行する際にはSELECT文が実行されていないため、「平均」という別名を認識していないために発生します。
では実行順序がSELECT文より後のORDER BY句であれば、「平均」という別名を使えるのではないか?
そう考えるのは普通だし、実際Excel以外であればORDER BY句で別名を使用することが出来る。
残念ながらExcelではORDER BY句で別名を使うことが出来ない。
上記のようにSELECT文で指定した内容を再度記載する必要がある。