请教SQL语句问题
--编写成绩处理的函数,返回表的形式
create function avg_zhou()
returns table
as
return( select ave_chj.stu_num,ave_bixiucourse.course_code, avg_score=case
when min(ave_chj.course_score)<60 and max(ave_chj.course_score)>60 then 60
else max(ave_chj.course_score) end
from ave_chj,ave_bixiucourse
where charindex(ave_chj.course_code, ave_bixiucourse.courselike_code)>0
group by ave_chj.stu_num,ave_bixiucourse.course_code,ave_bixiucourse.courselike_code
)
怎么修改,大致意思就是将ave_chj存放的是成绩记录,ave_bixiucourse存放的是必修的课程记录.
就是将每个人的必修课程成绩给处理一下.
有重修的记录并且有高于60的记录就取60,否则都是取最高分.
有的同学重修的时候,当年重修的那门课程已经停开啦,需要用另外修另外一课来替代.
有的同学这门课程要是没有修,也就是在ave_chj中没有找到对应的记录,就将这门课程记做30分.
ave_chj
stu_num course_code course_name course_score
20011604,"3240600","多媒体技术",81
20011604,"3241400","计算机网络B",44
20011604,"3243043","计算机应用基础B",46
20011604,"3243040","计算机应用基础A",77
ave_bixiucourse
course_name course_name course_likecode
计算机应用基础B 3243043 3243043,3243040
多媒体技术 3240600 3240600
计算机网络B 3241400 3241400
计算机语言设计 3235620 3235620
(其中计算机应用基础A可以替代计算机应用基础B)
结果应该是
stu_num course_name course_score
20011604 计算机应用基础B 60
20011604 多媒体技术 81
20011604 计算机网络B 44
20011604 计算机语言设计 30
问题点数:0、回复次数:5Top
1 楼zhouxinjie(zhouwei)回复于 2004-09-02 10:12:14 得分 0
各位帮帮我解决一下撒!Top
2 楼Frank1982(米)回复于 2004-09-02 11:53:37 得分 0
有重修的记录并且有高于60的记录就取60,否则都是取最高分.
有的同学重修的时候,当年重修的那门课程已经停开啦,需要用另外修另外一课来替代.
有的同学这门课程要是没有修,也就是在ave_chj中没有找到对应的记录,就将这门课程记做30分.
我觉得这个要求用其他的脚本语言来实现比较好,sql语句有点难判断Top
3 楼zhouxinjie(zhouwei)回复于 2004-09-02 13:06:05 得分 0
那样的话,执行效率太低Top
4 楼ouyld(ゎたしすきぁぉた)回复于 2004-09-02 19:01:24 得分 0
UPTop
5 楼hanshufan(小帆)回复于 2004-09-03 11:38:28 得分 0
upTop




