UNION句があると、


SELECT 'foo', 1
UNION ALL
SELECT name,
  row_number() OVER (PARTITION BY bar_id)
  FROM bar_table
  WHERE bar_id = 1
  ORDER BY bar_id DESC

とか書いてもエラーになります。

答えはこちら。


SELECT 'foo', 1
UNION ALL
SELECT name, r_number FROM
  (SELECT name,
     row_number() OVER (PARTITION BY bar_id) AS r_number
     FROM bar_table
     WHERE bar_id = 1
     ORDER BY bar_id DESC) AS temp_bar

ちなみにPostgreSQLでは最後の「AS temp_bar」をちゃんと付けないとエラーになりますが、ネットで見かけた記事ではORACLEだと別名をつけなくても動作しそうな感じでした。
(確認はしていません。)