‘壹’ sql查询第几名的语句
select * from score as t1 where
(select count(*) from score as t2 where t2.subject=t1.subject and t2.score>=t1.score)=3
错了,上面是每科成绩第三,看下面的
select top 1 * from
(select top 3 avg(score) as avgscore,name from score group by name order by avgscore desc)
order by avgscore
‘贰’ 查询第名字的第二个字和第三个字相同的sql语句
利用数据库自带函数截取名字字段的第二个字和第三个字,然后在where条件里面判断相等,Oracle中是instr函数
‘叁’ sql 查找成绩排名第二的同学
你这信息不足以让我了解如何给你答案,很明显,如果第一名有并列、第二名也有并列的情况,以上各位用top的答案都是错的。
因此,建议你将表结构给出来,我好帮你分析问题。
或者你试试看这样:
select * from tbl_score where score =
(
select distinct top 1 score from tbl_score where score not in(
select distinct top 1 score from tbl_score order by score desc
) order by score desc
)
我在我自己的临时表测试过,应该这样就可以满足的了查询成绩第二的情况,包括并列第二的所有人。
不知道楼主是否想要的就是这样?
‘肆’ SQL 查询各门成绩前两名的学生
你先抽一条数据来反过来理解这条SQL
比如 你表格里的第一条:陈六、政治
SQL里的子句你把t.subject 替换成 我们这条数据真实的值,就可以看出来
select top 2 stu_id from stu_score where subject='政治' order by score desc
就是查询我当前这条记录对应的subject(政治)里,成绩最高的两条数据的 stu_id。
我再提供一种写法给你
select*from(
selectt1.*,row_number()over()asfidfromstu_score)wherefid<=2
这种写法主要是row_number() over(partition by subject order by score desc),
意思是:我按照subject 分组,根据score排序从大到小,分别标出序号fid。也就是我把不同subject的成绩按从大到小排序,然后外层再取各自的前两名
‘伍’ SQL语句如何查询成绩第二高的学生
假设学生成绩表为xscj,里面有若干个字段,其中包括具体成绩得分字段df,那么,查询所有成绩第二高学生的SQL语句如下:
select * from xscj where df in (
select max(df) from xscj where df not in (
select max(df) from xscj))
该语句嵌套基层,最内层的语句查询最高分,第二层的语句查询除了最高分以外后剩下的最高分(即第二高分),最外层即是查询第二高分有哪些人(可能存在多人的情况)。
‘陆’ 查询班中第二名到第五名的学生信息,并进行降序排列用sql语句怎么实现
select * from 学生信息 where 名次>=2 and 名次<=5 order by 名次 desc
或select * from 学生信息 where 名次 between 2 and 5 order by 名次 desc
‘柒’ SQL语句 捞出各班级总分第二的人
--按班级分组 最大的总分 去掉最大的分数 就是第二名
select x.* from A x,
(select classId,max(Math+English+Yuwen) as SecondScore from A
where Id not in --先去掉总分第一名的id
(select A.ID from A,
(select ClassId,max(Math+English+Yuwen) as TotalScore from A
group by ClassId) t
where a.Math+a.English+a.Yuwen=t.TotalScore and A.ClassId=t.ClassId)
group by classId) temp
where x.Math+x.English+x.Yuwen=temp.SecondScore
and x.ClassId=temp.ClassId
‘捌’ SQL 查找第二高的
select top 2 * from [学生表] where id not in (select top 1 * from [学生表] order by [成绩] ) order by [成绩]
查出前2名,不在第一名的里面就是第二名了啊,1楼的是错的,哪有order by 在where条件前面的啊!
‘玖’ sql中查询排名名次
sql语句是这样的
select count(*) from student where class=601 and score>(select score from student where name='张三')
这个就求出了在601班的张三前有多少个人,他的名就是这个返回值+1,这个问题不关排序鸟事。做个统计就行了!
你不会是要在页面直接调用sql语句吧!
常规方法是把这个放在一个业务类传给数据访问层做处理后返回结果传给页面
你问的response.write这个有点吃力吧!