Среднее количество sql server

Таблица содержит

 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 других столбцов. Я не хочу группировать по всем.

Пожалуйста, прочтите это, чтобы получить несколько советов по улучшению вашего вопроса.

HABO 13.09.2018 21:46

Спасибо за ссылку на подсказки. У меня здесь самое сложное форматирование, мне нужно разобраться с этим. Цените помощь.

shorton 13.09.2018 22:59
0
2
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Один из подходов - использовать общее табличное выражение для добавления столбца для 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

Сложите запросы либо производными таблицами, либо 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}

Другие вопросы по теме