表包含
state,
location,
job_number,
(and many more columns)
我需要查询该州所在地的job_numbers的平均计数。换句话说,对于每个州,我需要知道每个位置的平均工作数量。
因此,如果有100个具有3个工作编号的阿拉斯加位置和100个具有1个工作编号的阿拉斯加位置,那么所有阿拉斯加行的结果将是2。 (100 * 3 + 100 * 1)/ 200。
在每个州寻找每个位置的平均职位数
所需结果
State Location JobNumber AvgJobsPerLocInState
Alaska Loc1 Job1 2
Alaska Loc1 Job2 2
Alaska Loc2 Job3 2
Alaska Loc2 Job4 2
Ohio Loc3 Job5 1
不知道该怎么做。为了使其复杂化,我的最终查询中还有大约50个其他列。我不想按所有人分组。
答案 0 :(得分:1)
一种方法是使用公用表表达式为count
添加一列,使用over
子句避免使用group by
,然后从该cte中选择avg
,再次使用over
子句。
这样的事情应该可以解决问题:
;WITH CTE AS
(
SELECT State
,Location
,JobNumber -- and all the other columns
,COUNT(JobNumber) OVER(PARTITION BY State, Location) As CountOfJobsPerLocation
FROM -- rest of the query here
)
SELECT State
,Location
,JobNumber -- and all the other columns
,AVG(CountOfJobsPerLocation) OVER(PARTITION BY State) As AvgJobsPerLocInState
FROM CTE
答案 1 :(得分:0)
使用派生表或CTE分层查询:
Outer query that adds the 50+ columns
FROM {Query that groups by State (only) and gets Average of Counts}
FROM {Query that groups by State & Location and gets Count of JobNumbers}