比如有个成绩表cj 字段:(自增字段)ID int,(学生姓名)name varchar(20),(科目成绩)score int。
写一个sql语句,要求:按科目成绩自增,并显示名次,不能是自增字段ID!!!小弟求助,问题大概意思是上面的,不知您理解了没??先谢过!!
写一个sql语句,要求:按科目成绩自增,并显示名次,不能是自增字段ID!!!小弟求助,问题大概意思是上面的,不知您理解了没??先谢过!!
解决方案 »
- .net中可以连接2005数据库,但asp中如何写?
- sqlserver数据库还原
- 请问SET NOCOUNT ON如何使用?
- 来,恭喜一下,前六名 wuyq11、hookee、navy887、7761098、dawugui 、feixianxxx
- 怎样在sqlserver里面插入图片文件啊?
- 如何查询数据表 某列的最后一条数据 ? 在线德国
- 如何将表中记录按一条件分组后,取得每个分组中的倒数第二条记录?
- sql server2005中关于select 语句的问题
- 请问SQLSERVER中有没有计时器功能的东东,使某动作每隔一分钟执行一次?
- 用sql语句修改表的列名(保证数据不变)、删除有默认值的列怎么写?
- 触发器问题~SQLOLEDB 无法启动分布式事务
- 几个比较初级的SQL问题
*,
名次=(select count(1)+1 from cj where score>t.score)
from
cj t
CREATE TABLE tb(Name varchar(10),Score decimal(10,2))
INSERT tb SELECT 'aa',99
UNION ALL SELECT 'bb',56
UNION ALL SELECT 'cc',56
UNION ALL SELECT 'dd',77
UNION ALL SELECT 'ee',78
UNION ALL SELECT 'ff',76
UNION ALL SELECT 'gg',78
UNION ALL SELECT 'ff',50
GO--1. 名次生成方式1,Score重复时合并名次
SELECT *,Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score)
FROM tb a
ORDER BY Place
/*--结果
Name Score Place
---------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 3
ff 76.00 4
bb 56.00 5
cc 56.00 5
ff 50.00 6
--*/--2. 名次生成方式2,Score重复时保留名次空缺
SELECT *,Place=(SELECT COUNT(Score) FROM tb WHERE Score>a.Score)+1
FROM tb a
ORDER BY Place
/*--结果
Name Score Place
--------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 4
ff 76.00 5
bb 56.00 6
cc 56.00 6
ff 50.00 8
--*/