不知道怎么用一条语句实现,大家给看看,谢谢

DelphiStudy 2004-04-28 09:50:39
成绩记录
TABLE Grade(
StuSysID --学生系统编号
CourseSysID --课程系统编号
Credit --学分(整数)
Grade --成绩(在0-100之间的整数)
)
StuSysID是从学生信息里选出来的,表示需要进行计算的学生,数量不定.
CourseSysID是从其他表里选出来的,表示学生学过的课程,数量不定.
一个学生的成绩有很多条这样de记录,数目不定.
我现在要求每个学生的平均成绩,并插入另外一个表里.
平均分de算法,我给个例子说明一下:
StuSysID=345
CourseSysID IN [1,2,3],成绩分别是95 65 85,学分是8 6 6
平均分=(95*8+65*6+85*6)/(8+6+6)

学生有很多,每个人都学过很多课。够麻烦的吧,我搞不定,大家帮帮忙,谢谢。
...全文
47 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DelphiStudy 2004-04-29
  • 打赏
  • 举报
回复
谢谢大家!我想大家的办法肯定够用啦!
结贴,给分。
shuichangliu 2004-04-29
  • 打赏
  • 举报
回复
select a.studyID,
[avgGrade]=sum(a.credit*a.grade)/sum(a.credit)
--into #tmpTable
from grade a
group by a.studyID
shuichangliu 2004-04-29
  • 打赏
  • 举报
回复
--测试数据
create table Grade
( studyID varchar(10),
courseSysID varchar(10),
credit tinyint,
grade int default 0 check(grade>=0 and grade<=100)
)
insert Grade select 'XH0001','KC001', 8,80
union all select 'XH0001','KC002', 6,60
union all select 'XH0001','KC003', 4,30
union all select 'XH0001','KC004', 5,79
union all select 'XH0001','KC005',10,99
union all select 'XH0002','KC002', 6,80
union all select 'XH0002','KC003', 4,55
union all select 'XH0002','KC004', 5,66
union all select 'XH0003','KC001', 8,88
union all select 'XH0003','KC002', 6,61
union all select 'XH0003','KC004', 5,58


----测试语句
select a.studyID,
[avgGrade]=(select top 1 sum(b.credit*b.grade)/sum(b.credit)
from grade b where b.studyID=a.studyID)
--into #tmpTable
from
(select distinct studyID from Grade) a

--测试结果
studyID avgGrade
---------- -----------
XH0001 75
XH0002 68
XH0003 71

(所影响的行数为 3 行)
shuichangliu 2004-04-29
  • 打赏
  • 举报
回复
搞得测试数据来啥!!
DelphiStudy 2004-04-28
  • 打赏
  • 举报
回复
大家帮帮忙啊
DelphiStudy 2004-04-28
  • 打赏
  • 举报
回复
将 expression 转换为数据类型 tinyint 时发生算术溢出错误。
cast(sum(Credit*Grade) as numeric(10,2))有错
cast(sum(Credit) as numeric(10,2))没错
怎么办呢?
8992026 2004-04-28
  • 打赏
  • 举报
回复
select StuSysID,cast(sum(Credit*Grade) as numeric(10,2))/sum(Credit) as avgGrade
from Grade
group by StuSysID
访问真八字排盘系统介绍: 1、八字排盘 八字排盘是将年月日时按照天干地支的形式进行排列,一个时间单位代表了一个柱。八字由年柱、月柱、日柱和时柱共四个柱组成,也被称为四柱八字。八字学中基于中国阴阳五行、天干地支与刑冲克害、以及民间盲派的神煞论等方式,进一步预测爱情顺遂、工作高低、姻缘好坏、财富高低、学业成就、身体健康等事的学问。 八字排盘由以下元素组合:年月日时四柱、大运干支、胎元 、流年干支、十神、地势、神煞等。生辰八字不只是把干支历计算出来,而还要遵守月令、节令的强弱,时辰的阴阳变化进行校正。排盘分析,就是根据出生者的性别、天干地支的阴阳五行关系、进一步推算出来的一套方法论,给预测者做人生吉凶的参考数据,在未来事业、财运、婚姻、家庭等问题时,能做出风险较低的决策。 八字排盘怎么看 八字排盘由年、月、日、时四柱组成,每柱包含一个天干和一个地支,共八个字。年柱代表出生的年份,月柱代表出生的月份,日柱代表出生的日期,时柱则代表出生的时辰。每个柱的干支组合都会对个人的命运产生影响。天干地支旁边标注的正财、偏财、偏印、正印、比肩、劫财、食神、伤官、正官、七杀等,称为十神。 2、八字排盘软件介绍 我们是腾讯云市场金牌合作伙伴,广州正规软件开发公司,开发的八字排盘系统数据最全面精准,我们八字排盘采用最精确的排盘程序,而且运用“真太阳时”,进行更精确的时间划分。大家都知道我们使用的北京时间,是统一规定的标准时间。而八字排盘需要相对于太阳方位的天文时间,即平太阳时。我们国家地大物博,北京时间19时,哈尔滨已经夜幕降临,而新疆却还是太阳高挂,这时哈尔滨的天文时间可能在20:00以后,而新疆的天文时间可能在16时以前。北京时间是东经120度经线的平太阳时,如果您出生地的经度与北京时间所处的经度差异较大,或者处于单数时间点的前后,比如6点差一刻,8点,10点15分等

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧