MySQL,按组分组并在组内执行SUM

时间:2019-01-30 15:08:52

标签: mysql sql

下表包含已发生的轮班记录。开始和结束字段是这些班次的开始和结束时间戳记。我正在寻找一个查询,以提取轮班所覆盖的每月总时数。

示例表:

ID Start                End
1  2018-10-23 10:30:00  2018-10-23 11:45:00
2  2018-10-22 22:00:00  2018-10-22 23:00:00
3  2018-11-22 22:00:00  2018-11-22 23:00:00

理想输出为:

Month Hours
10    2:15
11    1:00

我已经使用SUM(timediff(end,start))和GROUP BY解决了一些问题,但是并没有取得好成绩!

谢谢!

1 个答案:

答案 0 :(得分:0)

您在这里:

OpenFileDialog of = new OpenFileDialog();
of.Filter = "CSV files (*.csv)|*.csv|Excel Files|*.xls;*.xlsx";

结果:

select
  month(start) as month,
  time_format(sec_to_time(
    sum(timestampdiff(second, start, end))
  ), '%H:%i') as hours,
  sum(timestampdiff(second, start, end)) as seconds
from shift
group by month(start)

注意:我添加了额外的列month hours seconds ----- ----- ------- 10 02:15 8,100 11 01:00 3,600 ,以防您想使用此数字值进行一些额外的处理。