Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按2个不同参数分组的时差_Mysql - Fatal编程技术网

Mysql 按2个不同参数分组的时差

Mysql 按2个不同参数分组的时差,mysql,Mysql,我想知道是否有人能帮我解决目前的问题 我有一个数据库表,它有以下列 我有不同的领域,可以有相同的产品,我想做的是总结不同产品在各自领域的差异。例如,在上表中,我将得到以下结果(区域1中的产品1总计为3分钟等) 开始列和停止列具有DATETIME数据类型 我尝试了sum(timediff(stop,start))并按产品对其进行分组,但这似乎不起作用 因此,我还想根据面积位求和,无论我输入什么,我总是得到181 如果您能在这方面提供任何帮助,我将不胜感激。您只需按您所在的地区和产品进行分组,并计

我想知道是否有人能帮我解决目前的问题

我有一个数据库表,它有以下列

我有不同的领域,可以有相同的产品,我想做的是总结不同产品在各自领域的差异。例如,在上表中,我将得到以下结果(区域1中的产品1总计为3分钟等)

开始列和停止列具有DATETIME数据类型

我尝试了sum(timediff(stop,start))并按产品对其进行分组,但这似乎不起作用

因此,我还想根据面积位求和,无论我输入什么,我总是得到181


如果您能在这方面提供任何帮助,我将不胜感激。您只需按您所在的地区和产品进行分组,并计算每个地区的时间。这里的答案应该是正确的。对于您的查询,您只需要以下内容:

select
    area
    ,product
    ,SEC_TO_TIME(SUM(TIME_TO_SEC(`stop`) - TIME_TO_SEC(`start`))) as timediff
from products_in_area
group by area, product
如果您不想将最终结果显示为
TIME
值(例如,您可以在调用应用程序中进行格式化),那么您的查询看起来会更干净一些:

select
    area
    ,product
    ,SUM(TIMESTAMPDIFF(MINUTE, `start`, `stop`)) Minutes
from products_in_area
group by area, product

我对您的示例数据有点困惑:您实际上没有两列名为
start
,是吗?另外,对于前两行,第一列发生在第二列之前;对于最后两行,第一列发生在第二列之后。不知道我是怎么做到的?但是你是对的,一列是开始,另一列是停止,停止列总是发生在开始列之前。你的意思是
start
列总是发生在
stop
列之前吗?我有一个噩梦,但你是对的。顺便说一句,我试着跟随这个线程,但没有用
select
    area
    ,product
    ,SUM(TIMESTAMPDIFF(MINUTE, `start`, `stop`)) Minutes
from products_in_area
group by area, product