mysql - 为不同的用户选择最大和最小日期时间
问题描述
我有如下记录
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 是出口。
解决方案
我喜欢@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'));
推荐阅读
- apache-nifi - 解析后如何将文件的路径添加为流文件中的属性/字段?
- c++ - 无法在变量c ++的初始化中包含多个表达式
- reactjs - 文本字段更改值未在 OnSubmit 中更新 - React-Hook-Form 和 React Js
- javascript - TimeoutError:在自动测试中单击按钮后等待事件超时
- android - 如何在 Google Play 结算库版本 4 中混淆购买和 SkuDetails?
- sql - 在数据流转换中插入重复项 - ADF 管道
- reactjs - 努力在 react-app 中安装 node-sass
- typescript - 在 Typescript 中使用加密模块
- flutter - Flutter Riverpod:如何在家庭中传递多个参数?
- python - 自定义用户模型:创建超级用户时没有这样的表退出