在SQL server中怎么实现考查出勤情况啊.--在线等待,谢谢
我在帮老师做一个实验选课系时,遇到这个问题
就是如何得知学生一个星期里都没有选做过实验.
以备考查学生的出勤情况.
先谢啦.
问题点数:100、回复次数:10Top
1 楼dotAge(老朽)回复于 2002-12-05 00:42:06 得分 0
http://www.csdn.net/subject/4/Top
2 楼wowboy(星仔)回复于 2002-12-05 03:45:59 得分 0
哈,放心好啦,我一定给分的.
大家帮个忙吧Top
3 楼CCEO(CSDN的CEO)回复于 2002-12-05 07:58:13 得分 1
说清楚!Top
4 楼dongquestion(书山有路勤为径)回复于 2002-12-05 08:45:30 得分 1
你们有表结构怎么帮你啊Top
5 楼wowboy(星仔)回复于 2002-12-06 19:53:56 得分 0
哦,不好意思.
那我重新说说:
就是做一个系实验预约系统,学生可自由选择做实验的时间,但要求每一周都择一次,要不就要当其缺席一次.
学生表:学号,姓名
实验表:实验编号,实验时间,地点,老师编号,实验内容
预约表:学号,实验编号
出勤表:学号,缺席次数
问题就是怎么知道学生每一周(即星期一到五之内有没有选做个实验),还有是应该什么时候去检查.用不用在预约表里加入"时间"字段来实现,谢谢Top
6 楼dotAge(老朽)回复于 2002-12-07 00:01:22 得分 98
预约表:预约编号(ID),学号,实验编号,预约日期,预约履行
周表:编号(第X周),起始日期,结束日期
这个周表可以用程序自动创建,每学期大不了也就二十几周,不占多少空间,但却给统计带来极大的便利
写一个自定义函数f(日期)=周号,这很容易吧?
出勤表:学号,周号,实验次数
任何时间,需要统计时,告诉要统计第S周到第E周
INSERT 出勤表(学号,周号,实验次数)
SELECT 学号,F(预约日期),SUM(CASE WHEN 预约履行=1 THEN 1 ELSE 0 END) AS 实验次数
FROM 预约表 WHERE F(预约日期) BETWEEN S AND E GROUP BY 学号,F(预约日期)
然后你就可以:
SELECT 周号,实验次数 FROM 出勤表 WHERE 学号=XXX ORDER BY 周号
很清楚地看出XXX哪一周实验次数=0
用
SELECT 学号,SUM(1) AS 缺席次数 FROM 出勤表 WHERE 实验次数=0 GROUP BY 学号
统计出所有缺席学生的缺席总数
以上为思路,SQL语句不一定正确
Top
7 楼dotAge(老朽)回复于 2002-12-07 00:09:06 得分 0
补充说明一下,第一次我让你看新手必读,就是让你把问题说清楚,没有别的意思。一旦你把事情说清楚了,大家才能帮你。
基本上有这样的规律,提问字数少,回答字数则多,提问字数多,回答字数则少,但谁愿意多写字呢?你想要得到答案,那你就得多写字。Top
8 楼dotAge(老朽)回复于 2002-12-07 00:14:22 得分 0
突然又想到,如果学生不预约的情形,那么统计出来的出勤表中将没有那些未预约周的记录,此时可以用周表与出勤表进行左连接,出勤表若没有记录则为NULL,用ISNULL(出勤次数,0)Top
9 楼wowboy(星仔)回复于 2002-12-07 13:08:00 得分 0
DotAge兄弟,谢谢你!
谢谢你的热情帮助,我第一次在SQL版提问的所以可能问的不太恰当。
我先结这个帖子啦,到时有问题时再向DotAge兄弟和大家请教。
再次谢谢DotAge,祝你早日加"一颗星"。Top
10 楼wowboy(星仔)回复于 2002-12-19 23:38:57 得分 0
ddTop




