mysql - SQL 事务 : Sign "in" without matching "out"

标签 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

请注意,如图所示,一天中可能会有多次登录/退出。

最佳答案

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

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

关于mysql - SQL 事务 : Sign "in" without matching "out",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698335/

相关文章:

javascript - 匹配文本中的多个关键字(Javascript)

mysql - 如何在 mysql 6.3 Workbench 中禁用数据库前缀名称

MySQL SUM 和 CASE 可以在 DISTINCTROW 上使用吗?

mysql - SQL 左连接选择第一个表一次

algorithm - 最小最大匹配问题

linux - 执行sed命令时出错

python - 如何在Python中的另一个循环中正确编写一个for循环?

php - 未定义索引 : count(*) PDO

mysql - 插入到条件在 MySQL 中不起作用的表中

R根据另一个数据框中的匹配名称替换列名