1

結果が1つの行テーブルになるクエリがあり、その後の計算でこの結果を取得する必要があります。これは、機能しない単純化された例です(私が達成しようとしていることを説明するためだけに):

SELECT amount / (SELECT SUM(amount) FROM [...]) FROM [...]

ネストされた副選択と結合 (1 つの行テーブルと他のテーブルのクロス結合) をいくつか試しましたが、有効な解決策が見つかりませんでした。これを BigQuery で機能させる方法はありますか?

ありがとう、ラデク

編集:

わかりました、私は解決策を見つけました:

select
  t1.x / t2.y as z
from
  (select 1 as k, amount as x from [...] limit 10) as t1
join
  (select 1 as k, sum(amount) as y from [...]) as t2
on
  t1.k = t2.k;

しかし、これが最善の方法かどうかはわかりません...

4

2 に答える 2

0

あなたが見つけた方法 (基本的にダミー キーを使用したクロス結合) は、このクエリを実行するために私が知っている最良の方法です。これを行う方法を簡単に確認できるように、明示的なクロス結合演算子を追加することを検討しましたが、クロス結合は正しく実行されないとコストがかかる可能性があります (たとえば、2 つの大きなテーブルで実行すると n^2 の結果が作成される可能性があります)。

于 2013-04-08T22:20:29.643 に答える