もしかしたら当たり前なのかもしれないが、自分は不思議に感じたのでメモ。
SQLの実行順序
(私が認識している)SQLの実行順序はこの通り。
SQLの実行順序
FROM句
↓
JOIN句
↓
WHERE句
↓
GROUP BY句
↓
HAVING句
↓
SELECT句
↓
ORDER BY句
↓
LIMIT句
実行順序とエイリアス
となると、SELECT文でエイリアスを使った場合に、group by句でそのエイリアスは使えないのでは?と思っていました。しかし、(少なくともBigQueryでは)group by句でもエイリアスが使えるようです。GPT君に聞いた所、ユーザーフレンドリーな設計として取り入れられているDBが多いとのこと。
BigQueryのサンプルを使った確認
使用するテーブル
group byでエイリアスを使わない場合
エイリアス未使用
select
product_category as category,
round(avg(cost), 2) as avg_cost
from
`sql-book-440810.sample.products`
group by
product_category
結果
group byでエイリアスを使う場合
エイリアス使用
select
product_category as category,
round(avg(cost), 2) as avg_cost
from
`sql-book-440810.sample.products`
group by
category
結果
比較結果
同じだね☆