Как суммировать часы недели в MYSQL таблице? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть эти строки в моей таблице базы данных.

ID   Name         Date       working_hours   

29   A           2020-04-07      14.45                
29   A           2020-04-08      10.30                
29   A           2020-04-06      06.30                
29   A           2020-04-10      10.15                 
30   B           2020-04-09      09.15
30   B           2020-04-07      09.00 
30   B           2020-04-08      09.00
30   B           2020-04-10      04.45
30   B           2020-04-06      07.45
30   B           2020-04-10      04.45

Когда я выполняю ниже Query

SELECT ID,Name, date, working_hours,sum(working_hours) as 'total_week_hours'
from tblstafftasks
WHERE date between 
date_add('2020-04-10', interval  -WEEKDAY('2020-04-10') day) and 
date_add(date_add('2020-04-10', interval  -WEEKDAY('2020-04-10')-1 day), interval 6 day) 
 group by ID

Я получаю ниже OUTPUT

ID   Name         Date       working_hours    total_week_hours
29   A        2020-04-10          10.15                41.2
30   B        2020-04-10          04.45                43.5

Но я хотите, чтобы результат выглядел так, как показано ниже

ID   Name         Date       working_hours    total_week_hours
29   A         2020-04-07        14.45                 41.2
29   A         2020-04-08        10.30                 41.2
29   A         2020-04-06        06.30                 41.2
29   A         2020-04-10        10.15                 41.2
30   B         2020-04-09        09.15                 43.5
30   B         2020-04-07        09.00                 43.5
30   B         2020-04-08        09.00                 43.5
30   B         2020-04-10        04.45                 43.5
30   B         2020-04-06        07.45                 43.5
30   B         2020-04-10        04.45                 43.5

Любая помощь будет высоко оценена.

1 Ответ

1 голос
/ 14 апреля 2020

Присоединитесь к исходной таблице с помощью подзапроса, который получает итоги за неделю.

SELECT t1.ID, t1.Name, t1.date, t1.working_hours, t2.total_week_hours
FROM tblstafftasks AS t1
JOIN (
    SELECT ID, SUM(working_hours) AS total_week_hours
    WHERE date between 
        date_add('2020-04-10', interval  -WEEKDAY('2020-04-10') day) and 
        date_add(date_add('2020-04-10', interval  -WEEKDAY('2020-04-10')-1 day), interval 6 day
    GROUP BY ID)
) AS t2 ON t1.ID = t2.ID
WHERE t1.date between 
    date_add('2020-04-10', interval  -WEEKDAY('2020-04-10') day) and 
    date_add(date_add('2020-04-10', interval  -WEEKDAY('2020-04-10')-1 day), interval 6 day)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...