MySQL使用多行数据计算两个日期之间的时间

MySQL使用多行数据计算两个日期之间的时间,mysql,timestampdiff,Mysql,Timestampdiff,我有一个表,其中包含两列date_picked_begin和date_picked,并且将有多行,每行包含一个日期 如何使用TIMESTAMPDIFF获取所有数据行中日期之间的秒差 我尝试了以下查询,但它只返回与第一行的秒数差。别名total_picking_waiting_time试图获取总时间 SELECT COUNT(pi.pi_id) AS num_picking_waiting_time, AVG(TIMESTAMPDIFF(SECOND, pi.date_picked_begin,

我有一个表,其中包含两列date_picked_begin和date_picked,并且将有多行,每行包含一个日期

如何使用TIMESTAMPDIFF获取所有数据行中日期之间的秒差

我尝试了以下查询,但它只返回与第一行的秒数差。别名total_picking_waiting_time试图获取总时间

SELECT COUNT(pi.pi_id) AS num_picking_waiting_time,
AVG(TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked)) AS average_picking_waiting_time,
TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked) AS total_picking_waiting_time
FROM (SELECT pi_id, type, date_picked_begin, date_picked, picker FROM pickwave_items) as pi
WHERE pi.type = 'Picking (Waiting Time)' AND DATE(pi.date_picked) = '2017-02-25' AND pi.picker = 1
另外,我一直假设这个查询得到的是所有行中两个日期之间的平均时间。是这样吗?由于它没有像我预期的那样返回总时间,我现在认为它不是


谢谢

首先,FROM中的子查询是不必要的。由于MySQL具体化了这样的子查询,因此它增加了查询的冗长性,实际上降低了查询的速度

然后,要获得总拣选时间,请使用SUM:


啊,当然了。非常感谢你!如果答案允许,我会接受的。还感谢您让我知道子查询是不必要的,我可以发誓,当我在几个月前第一次尝试它时,如果没有它,它将无法正常工作,但现在返回相同的结果,显然是:再次感谢
SELECT COUNT(pi.pi_id) AS num_picking_waiting_time,
       AVG(TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked)) AS average_picking_waiting_time,
       SUM(TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked)) AS total_picking_waiting_time
FROM pickwave_items as pi
WHERE pi.type = 'Picking (Waiting Time)' AND
      DATE(pi.date_picked) = '2017-02-25' AND
      pi.picker = 1;