我正在尝试自学SQL。通过跳入那种深end的家伙,我学会了游泳,而且我想淹死了。目前,除了基本的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命令一样,这可以说的差不多。 我希望通过找到解决这个问题的方法,我可以尝试解决这个问题,这将极大地帮助我理解课程学习过程,从而使自己与实际事物建立大脑联系。 现在,我知道这很烦人,但是通过查看和分解并理解各个部分将极大地帮助我。
答案 0 :(得分:1)
您似乎想要一个基本的聚合查询:
select Empl_id, AdjClockInDate, MIN(AdjClockInTime), AdjClockOutDate,
MAX(AdjClockOutTime), SUM(TotAdjTime)
from AttendDet
where Empl_id = '33'
group by Empl_id, AdjClockInDate, AdjClockOutDate;
这是一个非常基本的查询,建议您在深入探讨SQL的基础知识之前。