2015-11-15 49 views
0

我有员工打卡和打卡的数据。我正在尝试编写一个返回平均开始时间和停止时间的SQL查询。试图在SQL的开始时间范围内查找平均开始时间?

例如,如果雇员记录以下切入数据:

enter image description here

有一些什么方法可以找到平均开始和停止时间?

到目前为止,我已经试过:

"SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(`start_time`))) FROM `table` WHERE `date` BETWEEN 'dateRange1' AND 'dateRange2';" 

解决方案(感谢@SubinçPoonamgode对您有所帮助!):

SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(`start_time`))) 
    FROM `table` WHERE `date` BETWEEN 'dateRange1' AND 'dateRange2' AND `start_time` <> '00:00:00'; 
+0

查询有什么问题? –

+0

您是否以daterange 1&2表示您希望得到两个日期范围的结果?或一个日期范围? –

+0

@GordonLinoff我不确定它是否正确(与原始计算器比较) – draft

回答

1

此查询版画的魅力。检查员工A(employee_id = 1)的时间。

SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(`start_time`))) 
    FROM `table` WHERE `date` BETWEEN 'dateRange1' AND 'dateRange2' AND 
    `table`.employee_id =1 AND `start_time` <> '00:00:00' 

希望这会有所帮助。

+0

感谢您的回复;我在寻找平均Punch-In时间。例如,如果员工在上午9点,上午10点,上午11点,下午12点和下午1点进行冲刺,我会认为该公式将返回上午11点... – draft

+0

“问题”中提到的查询有什么问题? –

+0

我越来越接近我认为......这可能是因为在员工不在时钟的日子里,数据库记录了一个'0'值,这可能是为什么输出的平均值与预期略有不同...... – draft

相关问题