MySQL сумм с одинаковым идентификатором - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть проблема, которую я не могу решить. У меня есть две таблицы: Project и Activity . Я должен объединить общее количество часов, потраченных на каждый проект. Проект с менее чем 1000 часов не должен быть включен.

Project_Nr |  Project_Name |   Total Hours |
         1 |       pro1    |        501    |
         1 |       pro1    |        501    |
         2 |       pro2    |        250    |
         3 |       pro3    |        1250   |

Как видите, pro1 вместе имеют более 1000 часов, как и pro3 . Я хочу, чтобы конечный результат напечатать что-то вроде этого.

Project_Nr |  Project_Name |   Total Hours |
         1 |       pro1    |        1002   |
         3 |       pro3    |        1250   |

Это мое SQL заявление. Я продолжаю получать объединенные часы всех проектов, а не разделять их на Project_Nr.

SELECT 
   project.PK_Project_Nr, 
   project.Project_Name, 
   SUM(activity.Hours) AS Combined_Hours
FROM project
INNER JOIN activity ON project.PK_Project_Nr = activity.FK_Project_Nr 
WHERE project.PK_Project_Nr IN (1)
AND project.Project_Status = "A"
GROUP BY project.Project_Nr ASC;

Этот код проверяет только Project_Nr 1. Мне нужно go через все различные проекты и проверить, если они объединили часы по 1000 и их статус «А» (это означает, что проект продолжается).

1 Ответ

2 голосов
/ 03 апреля 2020

Просто удалить условие из условия WHERE? А затем добавьте предложение HAVING для фильтрации общего количества часов:

SELECT p.PK_Project_Nr, 
       p.Project_Name, 
       SUM(a.Hours) AS Combined_Hours
FROM project p JOIN
     activity a
     ON p.PK_Project_Nr = a.FK_Project_Nr 
WHERE p.Project_Status = 'A'
GROUP BY p.Project_Nr ASC
HAVING SUM(a.Hours) >= 1000;
...