SQL:在给定多个条件的情况下检索时间戳



我正在努力解决以下SQL问题。

我有一个表,其中包含不同用户的不同活动和活动的时间戳:

Usercode   Activity_ID   Sequence_ID   TimeStamp
-------------------------------------------------
1       Packing_01       1          15:02
1       Packing_01       2          15:03
2       Packing_02       1          15:04  
2       Packing_02       3          15:07
1       Packing_05       1          16:03
1       Packing_05       1          16:06

我想实现的是每个Usercode和Activity从第一个和最后一个sequence_ID中获取时间戳。

像这样的

Usercode   Activity     Start_Work   End_Work
----------------------------------------------
1      Packing_01   15:02        15:03
1      Packing_05   16:03        16:06
2      Packing_02   15:03        15:07

我能做的是

SELECT 
Usercode, Activity, MIN(TimeStamp), MAX(TimeStamp)
FROM 
table
GROUP BY
Usercode, Activity

但这在午夜出现了问题,而且不干净。因此,我想看看最小和最大Sequence_ID,给定一组(Usercode,Activity(并返回各自的时间戳。我试着用子查询做了一段时间,但没能完全实现。

提前感谢!

如果问题不清楚,很抱歉,这是我第一次在这里发帖。

如果您想要完整的行,请考虑"过滤";而不是";聚合";。所以,我想你想要这样的东西:

select t.*
from t
where t.timestamp = (select min(t2.timestamp) from t t2 where t2.usercode = t.usercode
) or
t.timestamp = (select max(t2.timestamp) from t t2 where t2.usercode = t.usercode
);

相关内容