MySql计数条目没有重复的日期时间

时间:2015-01-07 09:35:00

标签: mysql count

我有一张表,可以将所有“签到”记录到系统中。我想计算当天用户的所有“签到”,但问题是有时用户在一分钟内错误地两到三次办理登机手续。所以我只想计算所有条目至少有两分钟的差距

我当前的命令如下:

"SELECT event_datetime, LEFT(tag_uid,8) AS tag_uid, count(*) as anzahl FROM events WHERE date(event_datetime) = curdate() GROUP BY tag_uid"

所以我只想算一下,如果event_datetime之间的差距至少是由tag_uid(用户)分组的两分钟

任何想法如何解决?

1 个答案:

答案 0 :(得分:0)

首先,您需要计算每个tag_uid的间隙,然后您可以根据需要设置条件。要计算差距,您需要有一个嵌套的选择命令,这将获得"首先checkIn"和#34;最后一次检查"使用min和max命令。使用" timediff"计算时间差。

注意:我没有尝试过代码,我也添加了select命令,因此您可以看到值以查找错误。

代码看起来与此类似:

SELECT 
    tbl_outer_events.event_datetime,
    LEFT(tbl_outer_events.tag_uid,8) AS tag_uid,
    count(tbl_outer_events.tag_uid) as anzahl,
    (select min(event_datetime) from tbl_events as T1 where ( (t1.tag_uid = tbl_outer_events.tag_uid)) and (date(t1.event_datetime) = curdate()) )as `first_checkin`,
    (select max(event_datetime) from tbl_events as T1 where ( (t1.tag_uid = tbl_outer_events.tag_uid)) and (date(t1.event_datetime) = curdate()))as `last_checkin`,
    (select TIMEDIFF(max(event_datetime), min(event_datetime)) from tbl_events as T1 where ( (t1.tag_uid = tbl_outer_events.tag_uid)) and (date(t1.event_datetime) = curdate())) as `interval`
FROM events as tbl_outer_events
WHERE ((date(event_datetime) = curdate())
        AND  (select TIMEDIFF(max(event_datetime), min(event_datetime)) from tbl_events as T1 where ( (t1.tag_uid = tbl_outer_events.tag_uid)) and (date(t1.event_datetime) = curdate())) >= '00:20:00')
GROUP BY tag_uid;

PS:请向我们提供样本数据或预期结果。它将帮助我们和您理解这个问题。