首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

问条sql语句的有关问题.越简单越好

2012-01-16 
问条sql语句的问题.越简单越好.Id科目成绩1语文602数学853语文854英语965化学776英语507物理908英语85列出

问条sql语句的问题.越简单越好.
Id         科目       成绩
1         语文         60
2         数学         85
3         语文         85
4         英语         96
5         化学         77
6         英语         50
7         物理         90
8         英语         85
列出最大前3不同分数的3条记录。比如96,90,85,但是有两条85的话要显示两条。显示的条数就是4条

[解决办法]
select * from T
where 成绩 in (select top 3 成绩 from T group by 成绩 order by 成绩 desc)
[解决办法]
create table t(id int,科目 nvarchar(20),成绩 int)
insert into t(id,科目,成绩)
select 1, '语文 ',60 union all
select 2, '数学 ',85 union all
select 3, '语文 ',85 union all
select 4, '英语 ',96 union all
select 5, '化学 ',77 union all
select 6, '英语 ',50 union all
select 7, '物理 ',90 union all
select 8, '英语 ',85

select * from t where 成绩 in(select top 3 成绩 from t group by 成绩 order by 成绩 desc) order by 成绩 desc

drop table t
[解决办法]
if object_id( 'pubs..tb ') is not null
drop table tb
go

create table tb(Id int,科目 varchar(10),成绩 int)
insert into tb(Id,科目,成绩) values(1, '语文 ', '60 ')
insert into tb(Id,科目,成绩) values(2, '数学 ', '85 ')
insert into tb(Id,科目,成绩) values(3, '语文 ', '85 ')
insert into tb(Id,科目,成绩) values(4, '英语 ', '96 ')
insert into tb(Id,科目,成绩) values(5, '化学 ', '77 ')
insert into tb(Id,科目,成绩) values(6, '英语 ', '50 ')
insert into tb(Id,科目,成绩) values(7, '物理 ', '90 ')
insert into tb(Id,科目,成绩) values(8, '英语 ', '85 ')
go


select * from
(
SELECT *,Place=(SELECT COUNT(DISTINCT 成绩) FROM tb WHERE 成绩 > = a.成绩)
FROM tb a
) t
where place <= 3
ORDER BY 成绩 desc

drop table tb
/*
Id 科目 成绩 Place
----------- ---------- ----------- -----------
4 英语 96 1
7 物理 90 2
2 数学 85 3
3 语文 85 3
8 英语 85 3

(所影响的行数为 5 行)
*/

热点排行