表内容为
ids 姓名 学科 得分 类别
1 name1 C# 70 计算机
2 name2 C# 75 计算机
3 name2 java 80 计算机
4 name1 C# 77 计算机
5 name3 英语 72 语言
6 name3 java 81 计算机我想得取类别为"计算机"的学科排行榜:如下
ids 姓名 学科 得分 类别
1 name1 C# 77 计算机
6 name3 java 81 计算机菜花先谢大家啊.很急啊.
ids 姓名 学科 得分 类别
1 name1 C# 70 计算机
2 name2 C# 75 计算机
3 name2 java 80 计算机
4 name1 C# 77 计算机
5 name3 英语 72 语言
6 name3 java 81 计算机我想得取类别为"计算机"的学科排行榜:如下
ids 姓名 学科 得分 类别
1 name1 C# 77 计算机
6 name3 java 81 计算机菜花先谢大家啊.很急啊.
where not exists(select 1 from tb where t.类别=类别 and t.学科=学科 and 得分>t.得分)
from table
where 类别='计算机'
group by 学科
select * from tb as a
where 类别='计算机' and
not exists(select 1 from tb where 类别='计算机' and 学科=a.学科 and 得分>a.得分)
select * from tb t where not exists(select 1 from tb where t.类别=类别 and t.学科=学科 and 得分>t.得分)
and 类别='计算机'
where 类别='计算机' and
得分=(select max(得分) from tb where 类别='计算机' and 学科=a.学科 )
FROM tb AS t
WHERE 得分=(
SELECT MAX(得分)
FROM tb
WHERE t.类别=类别
AND 学科=t.学科
AND 学科='计算机'
)
select * from tb as a
where 类别='计算机' and
not exists(select 1 from tb
where 类别='计算机' and 学科=a.学科 and 得分>a.得分)
and a.类别='计算机'
FROM tb a,
(
SELECT 类别,学科,MAX(得分)as MaxScore
FROM tb
GROUP BY 类别,学科
) b
WHERE a.类别=b.类别 AND a.学科=b.学科
AND a.得分=b.MaxScore
Set Nocount On
declare @1 table([ids] int,[姓名] nvarchar(5),[学科] nvarchar(4),[得分] int,[类别] nvarchar(3))
Insert @1
select 1,N'name1',N'C#',70,N'计算机' union all
select 2,N'name2',N'C#',75,N'计算机' union all
select 3,N'name2',N'java',80,N'计算机' union all
select 4,N'name1',N'C#',77,N'计算机' union all
select 5,N'name3',N'英语',72,N'语言' union all
select 6,N'name3',N'java',81,N'计算机'
Select * from @1 a Where [类别]=N'计算机' And ids=(Select Top 1 ids From @1 where [类别]=a.[类别] And [学科]=a.[学科] Order By [得分] Desc)
/*
ids 姓名 学科 得分 类别
----------- ----- ---- ----------- ----
4 name1 C# 77 计算机
6 name3 java 81 计算机
*/
(
id int identity(1,1) primary key not null,
[Name] nvarchar(20),
Subject Nvarchar(20),
Score int,
[Type] nvarchar(20)
)
insert into #XK select 'name1','C#',70,'计算机'
insert into #XK select 'name2','C#',75,'计算机'
insert into #XK select 'name2','Java',80,'计算机'
insert into #XK select 'name1','C#',77,'计算机'
insert into #XK select 'name3','英语',72,'语言'
insert into #XK select 'name3','java',81,'计算机'select * from #XK XX where not exists (select * from #XK where XX.Subject=Subject and XX.Score<Score) and [Type]='计算机'
呵呵
SELECT a.*
FROM #XK a,
(
SELECT [Type],Subject,MAX(Score)as MaxScore
FROM #XK
GROUP BY [Type],Subject
) b
WHERE a.[Type]=N'计算机' AND a.Subject=b.Subject
AND a.Score=b.MaxScore
declare @1 table([ids] int,[姓名] nvarchar(5),[学科] nvarchar(4),[得分] int,[类别] nvarchar(3))
Insert @1
select 1,N'name1',N'C#',70,N'计算机' union all
select 2,N'name2',N'C#',75,N'计算机' union all
select 3,N'name2',N'java',80,N'计算机' union all
select 4,N'name1',N'C#',77,N'计算机' union all
select 5,N'name3',N'英语',72,N'语言' union all
select 6,N'name3',N'java',81,N'计算机'
select * from @1 t where [类别]='计算机' and [ids] !<all(select [ids] from @1 where [学科]=t.[学科] and [得分]>t.[得分])
/*
ids 姓名 学科 得分 类别
----------- ----- ---- ----------- ----
4 name1 C# 77 计算机
6 name3 java 81 计算机
*/