CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求解一道题,不难,急!分100,万谢

楼主coco_tao(小琴)2004-12-03 22:24:01 在 MS-SQL Server / 基础类 提问

有三张表用如下代码创建:  
  create   table   xs(xh   char(8),xm   char(8),others   char(100),primary   key(xh));  
  create   table   kc(kch   char(4),mc   char(20),xf   smallint,primary   key(kch));  
  create   table   xk(xh   char(8),kch   char(4),cj   decimal(4,1),primary   key(xh,kch));  
  insert   into   xs   values('00010001','zxx','......');  
  insert   into   xs   values('00010002','lxx','......');  
  insert   into   xs   values('00010003','wxx','......');  
  insert   into   xs   values('00010004','qxx','......');  
  insert   into   kc   values('0001','SQL   Server   2000',3);  
  insert   into   kc   values('0002','C++程序设计',4);  
  insert   into   kc   values('0003','计算机基础',4);  
  insert   into   kc   values('0004','人工智能',2);  
  insert   into   kc   values('0005','数据结构',4);  
  insert   into   xk   values('00010001','0001',89.5);  
  insert   into   xk   values('00010001','0002',80.5);  
  insert   into   xk   values('00010002','0004',89.5);  
  insert   into   xk   values('00010001','0003',89.5);  
  insert   into   xk   values('00010003','0005',89.5);  
   
  现在要求:按成绩的绩点从大到小给学生(就是xs表)的px列(此列要自己新设)填上值(绩点=∑(成绩×学分)/   ∑学分)  
  该怎么做?向各位请教!我在线上等。。。万分感谢。  
  问题点数:0、回复次数:21Top

1 楼lsxaa(小李铅笔刀)回复于 2004-12-03 22:29:07 得分 0

upTop

2 楼coco_tao(小琴)回复于 2004-12-03 22:31:53 得分 0

请问你会做吗?  
  Top

3 楼lsxaa(小李铅笔刀)回复于 2004-12-03 22:32:37 得分 0

绩点   是哪来的Top

4 楼coco_tao(小琴)回复于 2004-12-03 22:36:03 得分 0

绩点就是按照那个公式算出来的,然后把它填到px列中,不知道这样解释是否明白?Top

5 楼lsxaa(小李铅笔刀)回复于 2004-12-03 22:37:13 得分 0

=     号   啊     我这里看     是减号     呵呵Top

6 楼lsxaa(小李铅笔刀)回复于 2004-12-03 22:41:15 得分 0

你试试,我这里不能试      
   
  select   a.xh,sum(a.cj*b.xf)/sum(b.xf)  
  from   xk   a,kc   b  
  where   a.kch=b.kch  
  group   by   a.xhTop

7 楼mschen(Co-ok)回复于 2004-12-03 22:47:47 得分 0

--这个可以吗?  
   
  update   xs   set   px=t.绩点  
  from   (select   xk.xh,sum(xk.cj*kc.xf)/sum(kc.xf)   绩点   from   xk   join   kc   on   xk.kch=kc.kch  
              group   by   xk.xh)   t   join   xs   on   t.xh=xs.xhTop

8 楼lsxaa(小李铅笔刀)回复于 2004-12-03 22:50:46 得分 0

mschen(老陈)     写的好   我以为查询呢Top

9 楼lsxaa(小李铅笔刀)回复于 2004-12-03 22:54:36 得分 0

select   a.xh,sum(a.cj*b.xf)/sum(b.xf)   as   绩点  
  from   xk   a,kc   b  
  where   a.kch=b.kch  
  group   by   a.xh  
  order   by   绩点   descTop

10 楼mschen(Co-ok)回复于 2004-12-03 22:57:25 得分 0

--添加新的列  
   
      alter   table   xs   add     px   decimal(4,1)  
   
  --执行  
   
        update   xs   set   px=t.绩点  
        from   (select   xk.xh,sum(xk.cj*kc.xf)/sum(kc.xf)   绩点   from   xk   join   kc   on   xk.kch=kc.kch  
                    group   by   xk.xh)   t    
        join   xs   on   t.xh=xs.xh  
   
  --测试结果  
  /*  
  xh               xm               others                                                                                                                                                                                               px            
  --------   --------   ----------------------------------------------------------------------------------------------------   ------    
  00010001   zxx             ......                                                                                                                                                                                               86.2  
  00010002   lxx             ......                                                                                                                                                                                               89.5  
  00010003   wxx             ......                                                                                                                                                                                               89.5  
  00010004   qxx             ......                                                                                                                                                                                               NULL  
   
  (所影响的行数为   4   行)  
  */  
  Top

11 楼coco_tao(小琴)回复于 2004-12-03 23:11:25 得分 0

非常感谢,我测试过了,能算出来Top

12 楼coco_tao(小琴)回复于 2004-12-03 23:16:34 得分 0

相比之下,老陈的解法更符合题目要求,当然也很感谢小李。这样吧,老陈给70,小李给30,可以吗?不知道两位觉得如何?Top

13 楼hdhai9451(☆新人类☆)回复于 2004-12-03 23:47:43 得分 0

恭喜!Top

14 楼vinsonshen(为了明天)回复于 2004-12-04 02:09:00 得分 0

学习下~~~Top

15 楼zhang_yzy(六子儿)回复于 2004-12-04 16:22:24 得分 0

感觉有些小问题,  
  若有的学生没有成绩记录那怎么处理的?Top

16 楼jackluo1981(无知者无畏)回复于 2004-12-04 18:06:44 得分 0

学习!Top

17 楼coco_tao(小琴)回复于 2004-12-04 20:45:11 得分 0

如果学生没成绩,应该在PX一列中写上“无成绩”之类的标识,那应该怎么加啊?Top

18 楼hdhai9451(☆新人类☆)回复于 2004-12-04 22:02:23 得分 0

那樣可不行呀,因為PX是數字類型,“无成绩”是字符串類型,同一列裡不能同時有數字類型和字符串類型一起Top

19 楼dazhu2(【倚天不出,谁与争锋】)回复于 2004-12-04 23:05:48 得分 0

学习Top

20 楼coco_tao(小琴)回复于 2004-12-05 00:16:25 得分 0

哦,谢谢指教Top

21 楼zgvslch(烟花离落)回复于 2004-12-05 00:36:23 得分 0

学习  
  Top

相关问题

  • 急,问题,求解?
  • Jsp 问题求解!急!
  • 急!!!求解2个问题
  • 奇怪问题急求解
  • 急急急!!!求解奇怪的问题!!?
  • 问题求解!(急!急!急!烦!烦!烦!)
  • excel规划求解题 谢谢:)
  • 100分求解登陆问题。。 谢谢 !
  • 难题!!!!求解?
  • 难题求解!!!

关键词

  • xk
  • kc
  • kch
  • xh
  • xs
  • 绩点
  • xf
  • cj
  • insert
  • sum

得分解答快速导航

  • 帖主:coco_tao

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo