| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:再一次请教:一个学生成绩排名的代码,有几个不懂的地方请行家指教一下
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:6 
再一次请教:一个学生成绩排名的代码,有几个不懂的地方请行家指教一下
SELECT 语文, (SELECT COUNT(*)+1 FROM xscj.dbf WHERE a.语文< 语文) AS 语文名次 FROM xscj.dbf AS a
这是一个表本身的嵌套查询。它是怎样进行执行的?也就是解题思路如何?
1、这里a.语文< 语文中的语句的a.语文别名a是指何表的别名? 语文是指何表中的橍名?
2、为什么相同的分数只计算一次?
3、名次号为什么会不連续的?从何语句会产生这种不連续的效果?
见图
图1会原表,图2为排序后的表。请行家指教。多谢了。

图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 sylknb 于 2011-4-23 17:32 编辑 ]
搜索更多相关主题的帖子: 如何 学生成绩 
2011-04-23 17:30
jc184892058
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2010-12-2
收藏
得分:20 
1、FROM xscj.dbf AS a   这个语句告诉a是指as前面的表   语文是表一中的属性  表二为查询结果
2、因为有默认的distinct语句   所以同样的分数只计算一次
3、不连续是因为分数一样,count计算时就按相同名次了
2011-04-27 16:26
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
jc184892058:

下述理介不知对否?请明示,谢谢!
1、a.语文是查询结果表FROM xscj.dbf AS a 中的列名,语文是原xscj.dbf的列名
2、SELECT 语文, (SELECT COUNT(*)+1 FROM xscj.dbf WHERE a.语文< 语文) AS 语文名次 FROM xscj.dbf AS a
用红色表示的是查询结果后表(2.JPG),用兰色表示的是原成绩表(1.jpg)。是把一个表好象分成实表与虚拟表。
表1
图片附件: 游客没有浏览图片的权限,请 登录注册
表2
图片附件: 游客没有浏览图片的权限,请 登录注册
 
3、如果把条件a.语文< 语文) 改为a.语文语文)排列次序变了。这是为什么,到底是哪一张表与哪一张表之间的比较 表3 
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 sylknb 于 2011-4-27 19:58 编辑 ]
2011-04-27 18:26
jc184892058
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2010-12-2
收藏
得分:0 
1、括号内的为嵌套子程序,即select语句所查找的是语文和语文名次   所谓语文名次是as语句更名后的名字,其实就是根据count函数求得的整型值。蓝色红色部分都为xscj.dbf这个表
2、子查询select count(*)+1
         from xscj.dbf
         where a.语文<语文
        其中 a.语文<语文   是为了找出比所查询对象大的个数   即排在它前面的对象的个数再加一(本身) 就得出了排名   而<  改成>就变成了求出倒数第几名的个数了
不知道这样说行不行?
你把语句写清楚点  就更容易理解了
SELECT 语文, (SELECT COUNT(*)+1
              FROM xscj.dbf
              WHERE a.语文< 语文) AS 语文名次
FROM xscj.dbf AS a
2011-04-28 10:23
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
jc184892058:
太谢谢您了,有如此耐心不计其烦的指教感到实在有点汗颜了。我找了有关资料再加上您的指导现在懂了。书上说为了区分主查询与子查询使用同一个表,在主查询中为该表起一个别名。a.语文是查询对象它与xscj.dbf中语文比较。讲到我的点子上了。再一次谢谢了。我对SQL还是一初学者,望以后多多指教。
2011-04-28 18:19
jc184892058
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2010-12-2
收藏
得分:0 
我也是初学者。。加油吧  这个感觉不难
2011-04-28 19:00
png
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:126
专家分:880
注 册:2010-10-6
收藏
得分:0 
搞明白就好.  另外我一直想提醒你.

(1)既没有主键又有重复的表违反关系数据库的基本原则.

(2)平均值也参与排名? 语文分数还有负数?
2011-04-29 00:39
快速回复:再一次请教:一个学生成绩排名的代码,有几个不懂的地方请行家指教一下 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018066 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved