[英]how to Get max time and min time in one field?
我想问一下mysql查询
我有这样的表数据
我的资料
`userid | time| date
609 | 07:56:31|2014-01-23
609 | 21:20:47|2014-01-23
609 | 17:25:27|2014-01-24
609 | 17:25:29|2014-01-24
609 | 17:13:54|2014-01-27
609 | 17:13:56|2014-01-27
609 | 07:55:09|2014-01-27`
我尝试了各种方法
但没有成功
喜欢
set @start='1900-01-01'; set @finish='2033-12-31'; SELECT data.userid,t.clock_out,data.date from data inner join (select max(time)as clock_out,date,userid from data where time>='10:01' group by data.userid,tgl)t on(data.date = t.date and data.userid=t.userid and t.clock_out=date.time)
规则
clock_in where time<='10:00' and clock_out time>'10:00',clock_in or clock_out can fill in the blank/empty,,the date for example 25 and 26 is not input data,but can be retrieved from variable @start='1900-01-01'and @finish='2033-12-31';
结果是
。
userid|date |clock_in | clock_out 609 |2014-01-23 |07:56 |21:20 609 |2014-01-24 | |17:25 609 |2014-01-25 | | 609 |2014-01-26 | | 609 |2014-01-27 |07:55 |17:13
\n\n
有人可以帮我吗...... :(谢谢....
我认为这是您想要的,这与您的答案不完全相同,但是我认为这是正确的。
您需要加入该用户ID的所有唯一日期的列表,然后使用该列表进行分组并从时间获取min()和max()。
select t1.userid,
t2.date,
min(t1.time) as in_time,
max(t1.time) as out_time
from test t1
join (select distinct date from test where userid = 609) t2
where t1.date = t2.date
and userid = 609
group by t1.userid, t2.date;
我还要说,代替日期和时间来存储日期时间,然后按一些选择日期部分的函数进行分组似乎要好得多。
您尝试过GROUP_CONCAT吗?
SELECT user_id, date, GROUP_CONCAT(time) as in_out FROM data GROUP BY date ORDER BY date,time;
这不是您所需要的100%,但可能足够接近?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.