我的时钟输出到一个SQL表,其中包含一列用于输入和输出时间戳,另一列输出员工姓名。我希望能够使用Google表格脚本中的SQL查询计算每位员工的每日工作时间。
继承我所拥有的:
ID Name Timestamp
1023 Emily Bromley 2016-08-15 9:00:00
1023 Emily Bromley 2016-08-15 17:00:00
1023 Emily Bromley 2016-08-16 9:00:00
1023 Emily Bromley 2016-08-16 17:00:00
1023 Emily Bromley 2016-08-17 9:00:00
1023 Emily Bromley 2016-08-17 15:30:00
1023 Emily Bromley 2016-08-22 9:00:00
1023 Emily Bromley 2016-08-22 16:00:00
1023 Emily Bromley 2016-08-23 8:55:00
1023 Emily Bromley 2016-08-23 16:58:00
1023 Emily Bromley 2016-08-24 8:20:00
1023 Emily Bromley 2016-08-24 16:59:00
1023 Emily Bromley 2016-08-25 9:52:00
1023 Emily Bromley 2016-08-25 16:59:00
1023 Emily Bromley 2016-08-29 9:11:00
1023 Emily Bromley 2016-08-29 16:57:00
我想要做的是将日期分组并找到时间戳的持续时间:
ID Name Day and Duration
1023 Emily Bromley 2016-08-15 8
1023 Emily Bromley 2016-08-16 8
1023 Emily Bromley 2016-08-17 6.5
1023 Emily Bromley 2016-08-22 7
1023 Emily Bromley 2016-08-23 8.1
1023 Emily Bromley 2016-08-24 8.5
1023 Emily Bromley 2016-08-25 8.1
1023 Emily Bromley 2016-08-29 8.2
我尝试过将MIN()和MAX()与GROUP BY一起使用,但是他们没有把这些日子分组在一起,这是我最新的SQL查询:
SELECT access_user.user_id,
access_user.first_name + ' ' + access_user.last_name,
MIN(user_time_log.log_time),
MAX(user_time_log.log_time)
FROM access_user
INNER JOIN user_time_log
on access_user.user_id=user_time_log.user_id
GROUP BY access_user.user_id,
access_user.first_name + ' ' + access_user.last_name
哪个输出:
1023 Emily Bromley 2016-08-15 9:00:00 2017-02-17 13:01:00
当然还有其他员工,但每个人每天只进出一次。我已经谷歌搜索了一段时间,但没有发现任何与我的问题类似的真实情况。非常感谢任何帮助。
答案 0 :(得分:0)
如果您想以您的方式将其放入电子表格中,那么您可以通过这种方式进行计算。您所要做的就是选择包含数据的列和右侧的空列,然后运行此功能,它将以小时为单位复制所有时间差。进入空栏。
function timeDiff()
{
var rng = SpreadsheetApp.getActiveRange();
var hour = 3600000;
var rngA = rng.getValues();
for( var i = 0; i < rngA.length ;i++)
{
if(i>0)
{
rngA[i][1]= (new Date(rngA[i][0]).getTime() - new Date(rngA[i-1][0]).getTime())/hour;
}
}
rng.setValues(rngA);
}
这是运行数据并格式化输出后的样子。我还将日期时间格式化为日期时间,并按升序日期排序。
这就是现在的样子
1023 Emily Bromley 8/15/2016 9:00:00
1023 Emily Bromley 8/15/2016 17:00:00 8.00
1023 Emily Bromley 8/16/2016 9:00:00 16.00
1023 Emily Bromley 8/16/2016 17:00:00 8.00
1023 Emily Bromley 8/17/2016 9:00:00 16.00
1023 Emily Bromley 8/17/2016 15:30:00 6.50
1023 Emily Bromley 8/22/2016 9:00:00 113.50
1023 Emily Bromley 8/22/2016 16:00:00 7.00
1023 Emily Bromley 8/23/2016 8:55:00 16.92
1023 Emily Bromley 8/23/2016 16:58:00 8.05
1023 Emily Bromley 8/24/2016 8:20:00 15.37
1023 Emily Bromley 8/24/2016 16:59:00 8.65
1023 Emily Bromley 8/25/2016 9:52:00 16.88
1023 Emily Bromley 8/25/2016 16:59:00 7.12
1023 Emily Bromley 8/29/2016 9:11:00 88.20
1023 Emily Bromley 8/29/2016 16:57:00 7.77