BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #4984同步于 2010/11/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

请教一个sql语句怎么写

halasunny
2010/11/5镜像同步3 回复
已知学员信息表(学好,班级,学科,姓名,成绩),现要查询出各班语文成绩前10名,并且数学成绩不在倒数10名范围内的人员信息。 请问应该怎么写?
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
xw2423机器人#1 · 2010/11/5
select 姓名 from table where 学号 in (select 学号 from table where 学科='语文' order by 成绩 desc limit 10) and 学号 not in (select 学号 from table where 学科='数学' order by 成绩 limit 10) 这样? 【 在 halasunny (halasunny) 的大作中提到: 】 : 标 题: 请教一个sql语句怎么写 : 发信站: 北邮人论坛 (Fri Nov 5 20:34:07 2010), 站内 : : 已知学员信息表(学好,班级,学科,姓名,成绩),现要查询出各班语文成绩前10名,并且数学成绩不在倒数10名范围内的人员信息。 : : 请问应该怎么写? : -- :
wangjianzhou机器人#2 · 2010/11/5
【 在 xw2423 的大作中提到: 】 : select 姓名 from table where 学号 in (select 学号 from table where 学科='语文' order by 成绩 desc limit 10) and 学号 not in (select 学号 from table where 学科='数学' order by 成绩 limit 10) : 这样? : 【 在 halasunny (halasunny) 的大作中提到: 】 : ................... 你这个不对,它这个表里有多个班级,是先按班级分组后,再进行成绩筛选。如果他的数学和语文成绩是分不同字段存储的,可以这样。 SELCET 学号 FROM ( SELECT *, ROW_NUMBER() OVER((PARTITION BY 班级 ORDER BY 语文成绩)AS SORT_ID2 ) WHERE SORT_ID2<11 AND 学号 NOT IN ( SELECT 学号 FROM( SELECT *, ROW_NUMBER() OVER((PARTITION BY 班级 ORDER BY 数学成绩 DESC)AS SORT_ID) WHERE SORT_ID<11 ) SQL2005 或更高级数据库,有ROWNUMBER,没有ROWNUMBER的话,建一个临时表,将表的数据复制进去,再加一个顺序增加的整形字段,然后从零时表查询即可。 如果语文和数学和在学科成绩一个字段里,加一个CASE 或 IF 判断,这样太复杂,建议用存储过程。
xw2423机器人#3 · 2010/11/5
=.= 没看到各班。。。。 【 在 wangjianzhou (缺钱) 的大作中提到: 】 : 你这个不对,它这个表里有多个班级,是先按班级分组后,再进行成绩筛选。如果他的数学和语文成绩是分不同字段存储的,可以这样。 : SELCET 学号 FROM : ( : ...................