Использование агрегатных функций в запросе SQL - PullRequest
2 голосов
/ 30 марта 2012

Моя структура таблиц выглядит следующим образом:

ATT_Table : Fields - Act_ID, Assigned_To_ID, Percent_Complete(Integer value)
Act_ID is primary key, Assigned_To_ID is referenced to Emp_ID in Employee_Table.

Employee_Table : Fields - Emp_ID, F_Name. 
Emp_ID is primary key.

Теперь в определенный момент времени одному и тому же лицу может быть назначено 1 или более действий.Моя цель - написать запрос для расчета нагрузки на человека.Я хочу посчитать количество видов деятельности, назначенных конкретному человеку (может быть больше 1), а затем взять среднее их percent_Complete.

Например, если человеку А назначен А1, А2, А3 (Act_ID).Затем соответствующие (Percent_Complete значения сложения) / 3.В основном средний.В моем последнем результате запроса я хочу:

Name, Number of activities assigned(Count), load value(Avg). 

Как мне это сделать?Нужно ли использовать вложенное предложение WHERE IN?Благодарю.

Ответы [ 4 ]

3 голосов
/ 30 марта 2012
SELECT  MIN(F_Name) Employee_Name ,
        COUNT(1) Activities_Assigned ,
        AVG(Percent_Complete) Load_Value
FROM    ATT_Table a
        INNER JOIN Employee_Table e ON a.Assigned_To_ID = e.Emp_ID
GROUP BY e.Emp_ID
2 голосов
/ 30 марта 2012

Возможно, мне не хватает некоторого нюанса, но звучит так, будто вы можете просто: присоединиться к таблицам, группировать по сотрудникам, COUNT и AVG для загрузки.

1 голос
/ 30 марта 2012

попробуйте следующее:

select Emp_ID, F_Name, count(Act_ID), avg(Percent_Complete)
from ATT_Table, Employee_Table where ATT_Table.Assigned_To_ID = Employee_Table.Emp_ID
group by Emp_ID, F_Name
0 голосов
/ 30 марта 2012

Как сказал Дмитрий, что-то вроде

SELECT Employee_Table.F_Name, COUNT(*) AS activities, AVG(Percent_Complete) AS load
FROM ATT_Table JOIN Employee_Table ON ATT_Table.Assigned_to_ID = Employee_Table.Emp_ID
WHERE Employee_Table.Emp_ID = 42
GROUP BY Employee_Table.Emp_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...