高难挑战:如何用SQL语句求分段时间的字段值?
一个单位,工人上班的班次分为甲,乙,丙,丁四个班时,某天的时间安排大概如下:
工作时间 班次
0~8 时 甲
8~16时 乙
16~24时 丙
休息 丁
其中3个班次的人上班,一个班次的人休息, 第二天的班次排列不是顺序轮换的,也就是说,第二天可能是
工作时间 班次
0~8 时 乙
8~16时 丙
16~24时 丁
休息 甲
也可能是
工作时间 班次
0~8 时 丁
8~16时 甲
16~24时 乙
休息 丙
或则是其它的排列,但一般是8天一个循环,所以我把班次安排做成一张表WorkTime,只要
给出日期,就能查出那一天的班次安排。字段如下:
字段 idx(日期序号) workidx(班次代号) worktimeidx(工作时间代号)
值的范围 1~8 1~4 1~4
该表只有8条记录,代表了一个循环的班次安排
给出某天的日期,只要求出该年的第一天到该天的天数除8,剩下的余数即是该表中的
日期序号idx ,workidx字段的值1~4代表了甲,乙,丙,丁四个班次,worktimeIdx
代表该班次的4种工作时间安排。
所有班次的工作记录都记录在一个数据库表WorkData中,每10分钟左右一条记录,
每条记录都有一个记录时间字段,比如:有如下记录字段:
quntity(产量) recordtime(记录时间)
数据库用的是MS SQL2000服务器
现在需要求某一个时间段中,甲班,乙班,丙班,丁班各个班次的工作累计或平均值。
比如求去年12月2日8点到本月5日之间,甲班的总产量或平均产量,乙班的总产量或平均
产量,丙班的总产量或平均产量,丁班的平均产量或总产量。
问题是:
如何用SQL语句产生对某个班次的工作求累计值?
如何用SQL语句产生对某个班次的工作求平均值?
问了几个自称是SQL高手的人,都没有答案 :(