
有sql高手嘛,有个高深的需求求指教!想拿到每个用户每天最早和最晚两次打卡记录
有sql高手嘛,有个高深的需求求指教!一张打卡表叫A,有id,userid,time三个字段,想拿到每个用户每天最早和最晚两次打卡记录,其他的都不要,求这个sql该怎么写...
有sql高手嘛,有个高深的需求求指教!
一张打卡表叫A, 有id,userid,time三个字段,
想拿到每个用户每天最早和最晚两次打卡记录,其他的都不要,求这个sql该怎么写啊! 展开
一张打卡表叫A, 有id,userid,time三个字段,
想拿到每个用户每天最早和最晚两次打卡记录,其他的都不要,求这个sql该怎么写啊! 展开
1个回答
展开全部
假设打卡时间字段是c_time,因为time本身是Oracle系统关键字,不能直接用作字段名称。实现您想要的功能SQL如下:
select userid, min(c_time) as "最早时间", max(c_time) as "最晚时间"
from A
group by userid, to_char(c_time, 'YYYY-MM-DD')
order by userid, to_char(c_time, 'YYYY-MM-DD')
假设表A数据如下图:
执行上述SQL后的结果如下如:
也就是说对于当天只有一次打卡记录的人员,其最早打卡时间=最晚打卡时间。
特别说明:排序字段的先后顺序可以根据您的需要调整,如果想集中看某人的可以先按人排序;如果集中想看某日期的则可以先按时间排序。
更多追问追答
追问
请问我这个不是从0点开始为一个自然日的,是从早上4点为一个自然日,这样该如何做呢?已增加悬赏,谢谢
追答
补充问一下:您的意思是说每日凌晨4点至次日凌晨4点为一个自然日,是这个意思吗?

2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分...
点击进入详情页
本回答由七鑫易维信息技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询