В моей схеме у меня есть таблица Projects и таблица Tasks.Каждый проект состоит из задач.У каждой задачи есть Hours и PercentComplete.
Пример таблицы:
ProjectID TaskID Hours PercentComplete
1 1 100 50
1 2 120 80
Я пытаюсь получить взвешенный процент выполнения для проекта.Я делаю это, используя следующую инструкцию SQL:
SELECT P.ProjectID, P.ProjectName, SUM(T.Hours) AS Hours,
SUM(T.PercentComplete * T.Hours) / 100 AS CompleteHours,
SUM(T.PercentComplete * T.Hours) / SUM(T.Hours) AS PercentComplete
FROM Projects AS P INNER JOIN
Tasks AS T ON T.ProjectID = P.ProjectID
WHERE (P.ProjectID = 1)
Мой вопрос касается этой части этой инструкции:
SUM(T.PercentComplete * T.Hours) / SUM(T.Hours) AS PercentComplete
Это дает мне правильный взвешенный процент для этого проекта (вслучай данных образца выше, 66%).Но я не могу понять, почему это происходит.
Почему этот запрос работает?