论坛首页 综合技术论坛

一道淘宝的考察sql语句的面试题

浏览 55198 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-26  
Select * From (Select * From t_stu s Where s.gender = 'f'Order By grade Desc) Where Rownum <=5
Union
Select * From (Select * From t_stu s Where s.gender = 'm'Order By grade Desc) Where Rownum <=5;
0 请登录后投票
   发表时间:2011-11-03  
select * from t_stu ttt where ttt.grade in (select tt.grade from (select distinct t.grade from t_stu t order by t_stu desc) tt where rownum <4 ) and sex=0
union
select * from t_stu ttt where ttt.grade in (select tt.grade from (select distinct t.grade from t_stu t order by t_stu desc) tt where rownum <4 ) and sex=1;
0 请登录后投票
   发表时间:2011-11-16  

select * from
(select * from (select top 5 * from sql where sex = '男' order by id asc) a
union all
select * from (select top 5 * from sql where sql.sex = '女' order by id asc) b) c order by id asc

0 请登录后投票
   发表时间:2011-11-16  
select * from t_stu t
where t.grade in (
       select grade
         from (select distinct grade from t_stu t1
                where t1.gender=t.gender order by t1.grade ) a
        where a.rownum<=5
       )
order by t.grade;
0 请登录后投票
   发表时间:2011-11-16  
lianglaiyang说得对,但是还少说了一个性别,男生中的前5名,女生中的前5名。。。。。
考察的不是sql,是审题啊
0 请登录后投票
   发表时间:2011-11-17  
select * from t_stu a where exists (select 1 FROM t_stu where gender=a.gender AND grade>a.grade having count(1)<5)
0 请登录后投票
   发表时间:2011-11-30  
create table T_stu
(name varchar2(20),
sex varchar2(10),
score varchar2(10)
)
select * from T_stu
1 张三 男 60
2 里斯 男 66
3 王五 男 55
4 找刘 男 67
5 侯酒 男 56
6 舒适 男 67
7 盐巴 男 78
8 久久 男 67
9 张华 女 55
10 张扬 女 67
11 张素 女 67
12 张凡 女 56
13 张彤 女 78
14 张伟 女 68
15 张清 女 87
16 张穆 女 67
17 彰显 女 56
18 黄杨 女 89

select *from
(
select t.* , row_number() over(partition by t.sex order by t.score desc) 排名 from T_stu  t
) t1
where t1.排名<7
         NAME     SEX      SCORE    排名
1 盐巴 男 78 1
2 找刘 男 67 2
3 久久 男 67 3
4 舒适 男 67 4
5 里斯 男 66 5
6 张三 男 60 6
7 黄杨 女 89 1
8 张清 女 87 2
9 张彤 女 78 3
10 张伟 女 68 4
11 张扬 女 67 5
12 张穆 女 67 6
轻松搞定
0 请登录后投票
   发表时间:2012-04-25  
isaacfu_454 写道

 

 select * from t_stu a where 5>(select count(*) FROM t_stu where gender=a.gender AND grade>a.grade) order by a.grade desc
 

+1

0 请登录后投票
   发表时间:2012-04-26  
select * from
(
select t.no,salary,row_number() over(partition by sex order by salary desc) row_num from tbl_testimport1 t
) where row_num<=5
0 请登录后投票
   发表时间:2012-04-26  
xiangzi21 写道
(select * from t_stu where gender = 0 order by grade desc limit 5)
union all
(select * from t_stu where gender = 1 order by grade desc limit 5)
这个不是想要的结果吗?


关键是考:
row_number() over(partition by sex order by salary desc)

这个吧
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics