SQL Transactions:Sign" in"没有匹配" out"

时间:2015-09-21 14:52:39

标签: mysql matching

请问数据库复杂的问题。

我有一系列登录并在一天内为一系列用户注销活动。 我想跟踪所有忘记退出的人:即给定日期的最后一笔交易是" IN"。我想总结一下这些人是谁:

personid  datetime            activity
ABC1      2015-09-01 08:00:00 IN
DEF2      2015-09-01 09:00:00 IN
ABC1      2015-09-01 12:00:00 OUT
ABC1      2015-09-01 13:04:00 IN
GHI3      2015-09-01 08:30:00 IN
GHI3      2015-09-01 15:50:00 OUT
ABC1      2015-09-01 14:00:00 OUT
ABC1      2015-09-01 14:20:00 IN
GHI3      2015-09-03 16:01:00 IN
ABC1      2015-09-03 16:00:00 OUT

所以在这种情况下,我想要一个列表:

DEF2 didn't sign out 
GHI3 didn't sign out second time

注意,如图所示,某一天可能会有多次登录/注销。

1 个答案:

答案 0 :(得分:0)

你可以选择最后一个活动(按日期),如果它是IN,则此后没有OUT

SELECT * FROM (
                SELECT personid, 
                max(datetime),
                activity FROM table GROUP BY personid) t1
WHERE t1.activity = 'OUT'