如何汇总MYSQL表中的星期几?

问题描述 投票:0回答:1

我的数据库表中有这些行。

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

当我在查询下面执行时

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

我低于输出

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

任何帮助将不胜感激。

mysql
1个回答
0
投票

[通过原始查询加入原始表,该子查询获取每周的总计。

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)
© www.soinside.com 2019 - 2024. All rights reserved.