with と temporary table と viewの存在意義がごっちゃになったので簡単にまとめ
テーブルの実体を持つか否か
temporary tableは持つが、withとviewは持たない。
前者は物理的にテーブルを作成するので、disk書き込みなど生じる可能性はある。
後者はsqlに対するaliasみたいなものなので、実体持たない。呼び出される度に実行される。
スコープ
temprary tableは 同一セッションのみ
viewはdrop viewするまで
withは一つのクエリ内のみ
index
temporary table : 貼れる
view: 貼れない( MATERIALIZED VIEWというのを使えば貼れる)
with: 貼れない