我正在努力解决以下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
);