我正在尝试自学SQL。我是一个跳入深水区来学游泳的人,我想我快要被水淹没了。目前,除了基本的Select、From、Where和Group By之外,我对形成SQL命令知之甚少。我正要看一些udemy课程来帮助我,但如果我有一个真实的例子,我可以帮助我将一些概念落地,我学得更好。
我在一个表中有一些数据,用于一个人在一天中打卡上班和下班。我希望将一天的时间压缩为一个时钟时间,一个时钟时间和一天的总小时数。
所以我还不太了解所有的sql部分是如何协同工作来形成一个查询的,我也不知道这些部分的执行顺序。到目前为止,我所能做的就是从表中选择列,并按日期和时间对它们进行排序。
例如,我有一个这样的表:
select Empl_id, AdjClockInDate, AdjClockInTime, AdjClockOutDate, AdjClockOutTime, TotAdjTime From AttendDet Where EmplCode = '33' Order By EmplCode Asc, SearchDate desc, AdjClockInTime Asc
empl_id  AdjClockInDate  AdjClockInTime  AdjClockOutDate AdjClockOutTime  TotAdjTime    33       07/01/2019       07:00            07/01/2019       12:00            5     33       07/01/2019       12:00            07/01/2019       12:30           .5    33       07/01/2019       12:30            07/01/2019       17:50            5
我想要得到的是将常见的日期和empl_id组合到一个单独的日期视图中,如下所示:
empl_id  AdjClockInDate  AdjClockInTime  AdjClockOutDate AdjClockOutTime  TotAdjTime    33        07/01/2019        07:00          07/01/2019       17:50           10
忽略.5小时的休息时间,并将非休息时间相加。
我认为我需要首先按日期和时间对它们进行排序,然后在列中获取时钟的第一个条目,然后获取时钟输出列的最后一个条目。这就是我能说的最多,因为我真的不知道我可以使用什么或者如何使用它来执行sql命令。我希望,通过解决这个问题,我正在努力解决它,这将极大地帮助我理解这些课程,这样我就可以在大脑中与一些有形的东西建立联系。现在我知道这超出了我的能力范围,但通过观察并分解它,了解其中的各个部分,将会对我有很大的帮助。
发布于 2019-07-12 02:42:31
您似乎想要一个基本的聚合查询:
select Empl_id, AdjClockInDate, MIN(AdjClockInTime), AdjClockOutDate, 
       MAX(AdjClockOutTime), SUM(TotAdjTime)
from AttendDet
where Empl_id = '33'
group by Empl_id, AdjClockInDate, AdjClockOutDate;这是一个非常基本的查询,建议您在深入研究之前先学习SQL的基础知识。
https://stackoverflow.com/questions/56995469
复制相似问题