with構文を使ってみた。

SQLでテーブルの一部だったり集計結果を使って表を作りたい時、with構文が非常に役に立つ。

WITH
    tmp1 as (SELECT COUNT(*) cnt, date FROM t1 GROUP BY date),
    tmp2 as (SELECT COUNT(*) cnt, date FROM t2 GROUP BY date)
SELECT 
    tmp1.date, tmp1.cnt, tmp2.cnt
FROM
    tmp1 
    JOIN tmp2 ON tmp1.date = tmp2.date;

このように、withを使って予めテーブルの集計を行っておく。
それぞれ名前をつけることで通常のテーブルと同様に扱うことができるので、これらを使用してselectしている。

もちろんfromに書いてもいいのだが、それだと集計テーブルの定義が見えにくくなってしまう。
テーブル間の複雑な集計結果を元に表を作る時に便利。