0

私は 2 つの一時テーブル 1 を持っています。1 つは 2 つの列、Locationid、平均を格納し、もう 1 つは全体の平均を格納します。

Location 列と average 列の入力に成功しましたが、overallaverage を実行して SELECT で結合する方法がわかりません。全体の平均を計算できますが、それを最初の一時テーブルに結合する方法がわかりません。

ステートメントの例

SELECT AVG(Hours) AS OverallAverage
FROM Hours

これは全体の平均を計算しますが、Locationid などで JOIN する必要がありますが、Locationid を選択に追加すると、グループ化が必要になるため、全体の平均ではなく、場所ごとの平均が得られます。

テーブルの外観の例

LocationID 平均 全体平均
1 0.7 0.65
2 0.55 0.65
3 0.45 0.65
4 0.9 0.65

任意のヒント?

4

2 に答える 2

3

あなたは使用することができますCROSS APPLY

select l.locationid, h.OverallAverage
from Location l
cross apply
(
  select avg(hours) as OverallAverage
  from hours
) h

SQL FiddlewithDemoを参照してください

またはCROSS JOIN

select l.locationid, h.OverallAverage
from Location l
cross join
(
  select avg(hours) as OverallAverage
  from hours
) h

SQL FiddlewithDemoを参照してください

于 2013-02-15T10:55:18.990 に答える
2

「」の意味はわかりませんが、「」に参加するための何か(特にその「何か」)が必要ですが、次のようなことができます。

select t2.col1, 
       t2.col2,
       hr.col1,
       avg(hr.hours) over (partition by locationid) as average
       avg(hr.hours) over () as overall_average
from hours hr
  join table_2 t2 on t2.locationid = hr.locationid
于 2013-02-15T10:56:25.217 に答える