Как получить среднюю оценку отдела, используя sql - PullRequest
0 голосов
/ 17 июня 2019

Я хочу получить среднюю оценку по всем отделам в моей базе данных, у меня есть запрос, который дает среднюю оценку только по одному отделу, есть ли способ узнать название отдела и его среднюю оценку.Предположим, у меня есть 2 отдела (сервер и ИТ). Среднее значение по серверу - это сумма всех оценок сотрудников этого отдела, поделенная на общее количество отделов.

Вот запрос, который у меня есть, но это просто среднее значение по одному отделу

SELECT SUM(RatingId)/(select COUNT(Id) from Employee where DepartmentId = 5) as Sums
FROM PerformanceReviewRatings pfr join
     Employee e
     on pfr.EmployeeId = e.Id join
     Department d
     on d.Id = e.DepartmentId
WHERE pfr.AppraisalId = 1009;

Ответы [ 3 ]

2 голосов
/ 17 июня 2019

Если сотрудник получает только один рейтинг, вам не нужен подзапрос или ссылка на таблицу Department:

SELECT e.DepartmentId,
       SUM(RatingId)/COUNT(*) as average_rating
FROM Employee e LEFT JOIN
     PerformanceReviewRatings pfr
     ON pfr.EmployeeId = e.Id AND
        pfr.AppraisalId = 1009
GROUP BY e.DepartmentId;

Если вы хотите, чтобы средние сотрудники имели рейтинги - скореечем один ваш вопрос (который относится к сотрудникам без рейтинга как 0 s - тогда:

SELECT e.DepartmentId, AVG(RatingId) as average_rating
FROM Employee e JOIN
     PerformanceReviewRatings pfr
     ON pfr.EmployeeId = e.Id
WHERE pfr.AppraisalId = 1009
GROUP BY e.DepartmentId
2 голосов
/ 17 июня 2019

Использование group by

SELECT e.DepartmentId, d.name, 
       SUM(RatingId)/COUNT(1) as Sums
  FROM PerformanceReviewRatings pfr
  JOIN Employee e
    ON pfr.EmployeeId = e.Id 
  JOIN Department d
    ON d.Id = e.DepartmentId
 WHERE pfr.AppraisalId = 1009
 GROUP BY e.DepartmentId, d.name
1 голос
/ 17 июня 2019

Использование функции AVG ().

SELECT e.DepartmentId,
       AVG(RatingId) as average_rating
FROM Employee e LEFT JOIN
     PerformanceReviewRatings pfr
     ON pfr.EmployeeId = e.Id AND
        pfr.AppraisalId = 1009
GROUP BY e.DepartmentId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...