0

我有 2 个临时表 1 存储 2 列,Locationid,平均值,另一个存储总体平均值。

我已成功填充位置和平均列,但无法弄清楚如何进行整体平均,然后在 SELECT 中将它们连接在一起。我可以计算出总体平均值,但我无法弄清楚如何将其加入第一个临时表。

语句示例

SELECT AVG(Hours) AS OverallAverage
FROM Hours

这可以计算出总体平均值,但我需要一些东西来加入它,即 Locationid 但如果我将 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 Fiddle

甚至一个CROSS JOIN

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

请参阅带有演示的 SQL Fiddle

于 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 回答