先日、後輩が書いたSQLのコードレビューをしたら、GROUP BY句にSELECT句で指定した別名を利用していて驚きました。
「いや、これ動くの!?」と。
軽く調べた感じではGROUP BYでSELECTにつけた別名は使えなさそうですが、PostgreSQLでは使えるのかもしれないです(他のRDBでも動くのかは調べてないです)。
以下、試した結果。バージョンは14.1で試しました。
下記のような、「test_result」というテーブルがあるとします。
ここから年代(10代、20代…)ごとの最高点数を表示するために、下記のようなSQLを記載します。
SELECT trunc(age / 10) || '0代' AS age_date, MAX(score) FROM test_result GROUP BY age_date ORDER BY age_date
今まで、こういう結果を書きたかったら、別名使わずに、
SELECT trunc(age / 10) || '0代' AS age_date, MAX(score) FROM test_result GROUP BY trunc(age / 10) || '0代' ORDER BY age_date
というように書いてたのですが、別名つかえるなら便利ですね。
コメント