一条SQL语句查询出成绩名次 排名.docx

上传人:小飞机 文档编号:3195322 上传时间:2023-03-11 格式:DOCX 页数:2 大小:36.78KB
返回 下载 相关 举报
一条SQL语句查询出成绩名次 排名.docx_第1页
第1页 / 共2页
一条SQL语句查询出成绩名次 排名.docx_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《一条SQL语句查询出成绩名次 排名.docx》由会员分享,可在线阅读,更多相关《一条SQL语句查询出成绩名次 排名.docx(2页珍藏版)》请在三一办公上搜索。

1、一条SQL语句查询出成绩名次 排名一条SQL语句查询出成绩名次 排名 需求简述: 例如我有这样一个成绩表 编号 姓名 成绩 1 张三 90 2 李四 85 3 王五 100 4 赵六 85 5 汪一 100 6 周九 78 7 何二 56 然后我希望排名次,因为这里有同分,所以必然会出现并列名次。网络上关于并列成绩名次排名有两种方式,其一是这样: A 名次 姓名 成绩 1 王五 100 1 汪一 100 3 张三 90 4 赵六 85 4 李四 85 6 周九 78 7 何二 56 第二种还是这样: B 名次 姓名 成绩 1 王五 100 1 汪一 100 2 张三 90 3 赵六 85 3

2、李四 85 4 周九 78 5 何二 56 SQL语句是一种很实用的技巧,希望和朋友们多交流,现在抛砖引玉把自己的3句SQL语句贴出来共享,抛砖引玉,希望大家多多指教,拍砖的轻点。 对于A方式,比较好办,以Access数据库为例,可以写成这样: SELECT e.place AS 名次, d.name AS 姓名, d.mark AS 成绩 FROM select a.id,count(b.id)+1 as place from sc a left join sc b on a.mark b.mark group by a.id. AS e INNER JOIN sc AS d ON e.id

3、 = d.id; 同时A方式也可以写成这样,效果等同,不过估计比上面那句效率低点: SELECT e.place AS 名次, d.name AS 姓名, d.mark AS 成绩 FROM select a.id,count(iif(b.id is null,null,b.id)+1 as place from sc a left join sc b on a.markb.mark group by a.id. AS e INNER JOIN sc AS d ON e.id = d.id; 而B方式则比较棘手,写了半个钟头才写好.: SELECT e.place AS 名次, d.name AS 姓名, d.mark AS 成绩 FROM select c.id,count(iif(c.mark is null,null,c.mark)+1 as place from (select a.id,b.mark from sc a left join sc b on a.mark b.mark group by a.id,b.mark)c group by c.id. AS e INNER JOIN sc AS d ON e.id = d.id;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号