代码在MSSQL中可以通过,第二个问题不知道我理解的对不对,我是求出总分最高的3个人
1.
create table schools(class varchar(20),name varchar(40),sex varchar(1))
insert into schools values ('class1','aaa','f')
insert into schools values ('class1','abu','f')
insert into schools values ('class1','aaa','m')
insert into schools values ('class1','abu','m')
insert into schools values ('class2','aaa','f')
insert into schools values ('class2','abu','f')
insert into schools values ('class2','aaa','m')
insert into schools values ('class2','abu','m')
insert into schools values ('class3','aaa','f')
insert into schools values ('class3','abu','f')
insert into schools values ('class3','aaa','m')select distinct a.class from (select class,sex,count(sex) as counts from schools group by class,sex ) 
a,(select class,sex,count(sex) as counts from schools group by class,sex )b where a.counts=b.counts and a.class=b.class
and a.sex<>b.sex
2.
create table Students(name varchar(20),score int)
insert into students values('abu',100)
insert into students values('aaa',100)
insert into students values('ddd',100)
insert into students values('ccc',100)
insert into students values('abu',90)
insert into students values('aaa',80)
insert into students values('ddd',60)
insert into students values('ccc',50)
insert into students values('abu',90)
insert into students values('aaa',100)
insert into students values('ddd',20)
insert into students values('ccc',100)select top 3 name,scores from (select name,sum(score) as scores from students group by name) a order by scores desc

解决方案 »

  1.   

    select distinct a.class from (select class,sex,count(sex) as counts from schools group by class,sex )
    a,(select class,sex,count(sex) as counts from schools group by class,sex )b where a.counts=b.counts and a.class=b.class
    and a.sex<>b.sex学习
      

  2.   

    这个效率可能会更好:
    select distinct a.class from (select class,sex,count(sex) as counts from #schools where sex = 'M' group by class,sex )
    a,(select class,sex,count(sex) as counts from  #schools where sex = 'F' group by class,sex ) b 
              where a.counts=b.counts and a.class=b.class
      

  3.   

    1.
    select class from school group by class having count(Sex='F')=count(Sex='M');
      

  4.   

    2、
    select a.name, a.score from Students a where score in (select distinct top 3 score from Students order by score desc)