加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Access中的SQL排名语句

(2016-09-16 14:54:33)
分类: 编程
一、原始表格(表名sc)
学号 班级 成绩
1 1 81
2 1 69
3 2 75
4 2 90
5 1 81
二、SQL排名语句
select *,Dcount("成绩","sc","成绩>"& 成绩)+1 as 名次 from sc
  其中用到了计数函数Dcount,语法如下:
DCount("要统计的字段名","数据所在的表/视图","条件")
  本例中,Dcount函数中的条件是"成绩>"& 成绩,前一个带引号的成绩,是列的名字,&符号后面的不带引号的成绩,是当前学生的具体成绩。整个计算结果就是,返回成绩大于本人成绩的数目,再加1即得名次。
  查询结果为
学号 班级 成绩 名次
1 1 81 2
2 1 69 5
3 2 75 4
4 2 90 1
5 1 81 2
三、有缺考情况的排序
  假如前面所给例子中,学号为4的学生成绩为空,上面语句返回的结果是这个学生的名次为“# 错误”,怎样才能杜绝这个问题呢?可以用下面的语句:
select sc.*, DCount("成绩","sc","成绩>" & 成绩)+1as 名次 from sc where (IsNull([成绩])=False)
  显然这里加了一个条件子句(上面红颜色的部分),结果中将不出现这个学生。
四、SQL按班级排名语句
  有时候我们需要按班级排名,而不是年级的总排名,这时候就需要改变前面的Dcount函数中的条件:
select *,Dcount("成绩","sc","班级=" & 班级 & " AND 成绩>"& 成绩)+1 as 班名次 from sc
  查询结果为
学号 班级 成绩 班名次
1 1 81 1
2 1 69 3
3 2 75 2
4 2 90 1
5 1 81 1

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有