首页 > 解决方案 > 为不同的用户选择最大和最小日期时间

问题描述

我有如下记录

ID(int)      DATA_ORA(timestamp)     BADGE  LETTORE       
   1         2017-04-01 09:30:00       1       1    
   2         2017-04-01 12:30:00       1       2    
   3         2017-04-01 13:30:00       1       1    
   4         2017-04-01 18:30:00       1       2    
   5         2017-04-01 09:30:00       2       1    
   6         2017-04-01 18:30:00       2       2    
   7         2017-04-02 09:30:00       1       1    
   8         2017-04-02 18:30:00       1       2
   9         2017-04-03 09:30:00       3       1    
   10        2017-04-03 12:30:00       3       2    
   11        2017-04-03 13:30:00       3       1    
   12        2017-04-03 18:30:00       3       2 

我想获取每个用户(徽章)的第一次访问时间和最后一次每日注销时间(每天)。

我怎么能做到这一点?

我希望的记录如下

ID(int)      DATA_ORA(timestamp)     BADGE  LETTORE       
   1         2017-04-01 09:30:00       1       1        
   4         2017-04-01 18:30:00       1       2    
   5         2017-04-01 09:30:00       2       1    
   6         2017-04-01 18:30:00       2       2    
   7         2017-04-02 09:30:00       1       1    
   8         2017-04-02 18:30:00       1       2
   9         2017-04-03 09:30:00       3       1      
   12        2017-04-03 18:30:00       3       2 

有可能这样做吗?谢谢。

注意:ID 是自动递增的,LETTORE 1 是入口,LETTORE 2 是出口。

标签: mysql

解决方案


我喜欢@fa06 的回答,但他想念你每天都需要数据。所以试试这个:

select * from t1 a
where DATA_ORA in (select min(DATA_ORA) from t1 b where a.badge=b.badge GROUP BY DATE_FORMAT(DATA_ORA, '%Y%m%d'))
union
select * from t1 a
where DATA_ORA in (select max(DATA_ORA) from t1 b where a.badge=b.badge GROUP BY DATE_FORMAT(DATA_ORA, '%Y%m%d'));

推荐阅读