Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 按最高/最大值分组并计算差异_Mysql_Sql_Group By_Max_Sql Function - Fatal编程技术网

Mysql 按最高/最大值分组并计算差异

Mysql 按最高/最大值分组并计算差异,mysql,sql,group-by,max,sql-function,Mysql,Sql,Group By,Max,Sql Function,这是针对Oracle server上的数据运行的MYSQL/SQL。我有一个存储数据的SQL表,如下所示: {IMPORTID Created IMPORTREQUESTID STARTDATE ENDDATE 1156 04/21/2017 (12 AM) 63833 4/23/2017 18:18 4/23/2017 18:19 1156 04/21/2017 (12 AM) 63833 4/23/201

这是针对Oracle server上的数据运行的MYSQL/SQL。我有一个存储数据的SQL表,如下所示:

{IMPORTID Created  IMPORTREQUESTID    STARTDATE       ENDDATE
1156     04/21/2017 (12 AM)    63833           4/23/2017 18:18 4/23/2017 18:19
1156     04/21/2017 (12 AM)    63833           4/23/2017 18:18 4/23/2017 18:18
1156     04/21/2017 (12 AM)   63832           4/23/2017 17:56 4/23/2017 17:57
1156     04/21/2017 (12 AM)    63832           4/23/2017 17:56 4/23/2017 17:57
1156     04/21/2017 (12 AM)   63832           4/23/2017 17:56 4/23/2017 17:57}  
我希望查询遍历该表,找到任何给定IMPORTID的最高或最大IMPORTREQUESTID和最大ENDDATE。然后,在找到包含最大值的行后,计算任何给定IMPORTID的CREATED和max(ENDDATE)之间的差值。同样,我只希望将max IMPORTREQUESTID和ENDDATE绑定到给定的IMPORTID。(一个IMPORTID将有多行具有不同的importRequestId)

因此,对于上面的给定数据,我的查询应该只返回1行,如下所示:

{IMPORTID Created  IMPORTREQUESTID    STARTDATE       ENDDATE         DIFF
1156    04/21/2017 12 AM    63833  4/23/2017 18:18  4/23/2017 18:19  **6:19**}
因此,在本例中,它发现IMPORTREQUESTID 63833是最高值,然后enddate 18:19是最高时间。然后它选择该行并计算创建日期和结束日期之间的差异

以下是我到目前为止的疑问:

     SELECT ImportID 
 ,A.created
 ,IMPORTSTATUS 
 ,IMPORTCANONICALTYPE  
 , to_char(StartDate,'MM/DD/YYYY HH24:MI') StartDate 
 , to_char(EndDate,'MM/DD/YYYY HH24:MI') EndDate  
 , ((A.created-A.Enddate)*60*24) as MinDiff 
 , ImportRequestID

FROM (SELECT DISTINCT importrequestpartdone.ImportID
,importrequestpartdone.IMPORTCANONICALTYPE 
 ,importrequestpartdone.IMPORTSTATUS 
 ,importrequestpartdone.ImportRequestID 
 , importrequestpartdone.StartDate 
 , importrequestpartdone.EndDate 
,import.created
     From import,baywatchnosnap.importrequestpartdone@db1 
 where contextid=10114
and import.id=importrequestpartdone.importid
and importrequestpartdone.importstatus='2I') A

这将返回所有行。我只想要上面指出的最大值。因此,每个IMPORTID应该只返回一行

尽管我不明白你是如何得出6:19的差距的,因为差距只有1分钟

但是试试这个:-

SELECT importrequestpartdone.ImportID 
 ,import.created
 ,importrequestpartdone.IMPORTSTATUS 
 ,importrequestpartdone.IMPORTCANONICALTYPE  
 , to_char(StartDate,'MM/DD/YYYY HH24:MI') StartDate 
 , to_char(EndDate,'MM/DD/YYYY HH24:MI') EndDate  
 , ((A.created-A.Enddate)*60*24) as MinDiff 
 , importrequestpartdone.ImportRequestID

FROM baywatchnosnap.importrequestpartdone@db1
inner join

(SELECT importrequestpartdone.ImportID
 ,max(importrequestpartdone.ImportRequestID) as max_req_id
 , max(importrequestpartdone.EndDate) as max_end
     From import,baywatchnosnap.importrequestpartdone@db1  
 where contextid=10114
and import.id=importrequestpartdone.importid
and importrequestpartdone.importstatus='2I'
group by importrequestpartdone.ImportID ) A

on a.ImportID=importrequestpartdone.ImportID and a.max_req_id=importrequestpartdone.ImportRequestID
and a.max_end=importrequestpartdone.EndDate

inner join
import
on import.id=importrequestpartdone.importid
where contextid=10114
and importrequestpartdone.importstatus='2I';

你能解释一下你是如何得出样本数据的
6:19
差异的吗?我们是否应该忽略
StartDate
EndDate
的时间成分,或者两者都忽略?一个较小的
ImportRequestID
是否可以有一个较新的
EndDate
,或者反之亦然?请看我不懂“针对oracle server运行MySQL”。。。这种日期格式的东西真是荒谬