有sql高手嘛,有个高深的需求求指教!想拿到每个用户每天最早和最晚两次打卡记录

有sql高手嘛,有个高深的需求求指教!一张打卡表叫A,有id,userid,time三个字段,想拿到每个用户每天最早和最晚两次打卡记录,其他的都不要,求这个sql该怎么写... 有sql高手嘛,有个高深的需求求指教!

一张打卡表叫A, 有id,userid,time三个字段,
想拿到每个用户每天最早和最晚两次打卡记录,其他的都不要,求这个sql该怎么写啊!
展开
 我来答
ubai_2009
2018-03-21 · TA获得超过633个赞
知道小有建树答主
回答量:366
采纳率:66%
帮助的人:169万
展开全部

假设打卡时间字段是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余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式