sql语句面试题
最近有许多学员问了一些面试中的问题,总结起来看,一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据。针对这种情况,再此做一个介绍。
1:找出公司里收入最高的前三名员工:
SQL> select rownum, last_name, salary
2 from (select last_name, salary
3 from s_emp
4 order by salary desc)
5 where rownum<=3;
ROWNUM LAST_NAME SALARY
---------- ------------------------- ----------
1 Velasquez 4750
2 Ropeburn 2945
3 Nguyen 2897.5
注意:请大家分析一下一下语句为什么不对:
SQL> select rownum, last_name, salary
2 from s_emp
3 where rownum<=3
4 order by salary desc;
ROWNUM LAST_NAME SALARY
---------- ------------------------- ----------
1 Velasquez 4750
3 Nagayama 2660
2 Ngao 2000
2: 找出表中的某一行或某几行的'数据:
(1):找出表中第三行数据:
用以下方法是不行的,因为rownum后面至可以用<或<=号,不可以用=,>号和其它的比较符号。
SQL> select * from s_emp
2 where rownum=3;
no rows selected
SQL> select * from s_emp
2 where rownum between 3 and 5;
no rows selected
正确的方法如下:
SQL> l
1 select last_name, salary
2 from (select rownum a, b.*
3 from s_emp b)
4* where a=3
SQL> /
LAST_NAME SALARY
------------------------- ----------
Nagayama 2660
(2):找出第三行到第五行之间的数据:
SQL> l
1 select last_name, salary
2 from (select rownum a, b.*
3 from s_emp b)
4* where a between 3 and 5
SQL> /
LAST_NAME SALARY
------------------------- ----------
Nagayama 2660
Quick-To-See 2755
Ropeburn 2945
(1):第一种方法:
SQL> select last_name, dept_id, salary
2 from s_emp a
3 where salary>(select avg(salary)
4 from s_emp
5 where dept_id=_id);
LAST_NAME DEpT_ID SALARY
------------------------- ---------- ----------
Velasquez 50 4750
Urguhart 41 2280
Menchu 42 2375
Biri 43 2090
Catchpole 44 2470
Havel 45 2483.3
Nguyen 34 2897.5
Maduro 41 2660
Nozaki 42 2280
Schwartz 45 2090
10 rows selected.
(2):第二种方法:
SQL> l
1 select _name, ry, _id, al
2 from s_emp a, (select dept_id, avg(salary) avgsal
3 from s_emp
4 group by dept_id) b
5 where _id=_id
6* and ry>al
SQL> /
LAST_NAME SALARY DEpT_ID AVGSAL
------------------------- ---------- ---------- ----------
Velasquez 4750 50 3847.5
Urguhart 2280 41 2181.5
Menchu 2375 42 2055.16667
Biri 2090 43 1710
Catchpole 2470 44 1995
Havel 2483.3 45 2069.1
Nguyen 2897.5 34 2204
Maduro 2660 41 2181.5
Nozaki 2280 42 2055.16667
Schwartz 2090 45 2069.1
10 rows selected.
4:找出那些工资高于他们所在部门的manager的工资的员工。
SQL> l
1 select id, last_name, salary, manager_id
2 from s_emp a
3 where salary>(select salary
4 from s_emp
5* where id=ger_id)
SQL> /
ID LAST_NAME SALARY MANAGER_ID
---------- ------------------------- ---------- ----------
6 Urguhart 2280 2
7 Menchu 2375 2
8 Biri 2090 2
9 Catchpole 2470 2
10 Havel 2483.3 2
12 Giljum 2831 3
13 Sedeghi 2878.5 3
14 Nguyen 2897.5 3
15 Dumas 2755 3
16 Maduro 2660 6
10 rows selected.
-
播音主持面试介绍
播音主持面试介绍1各位老师好!我是张莉,来自景色神秘的湘西,宋祖英的故乡——古丈,家乡的水孕育了我温柔善良的'本性,家乡的山教会了我百折不挠的精神。在嘹亮的山歌里出生,在铿锵的鼓声中成长,作为一名土生土长的土家女孩,我热爱自己的家乡,但我更渴望看到外面的世界...
-
面试日语个人介绍
面试日语个人介绍1我是xx学院日语系的应届毕业生,我叫,我是上海人。私は申します.上海に生まれて.今年x学院に卒业しました、専门は日本语です.我的兴趣是上网浏览信息,听音乐。趣味はインターネット、音楽です性格乐观开朗,诚实,有责任心,适应能力较强。性格は明る...
-
应届毕业生的面试自我评价
在平平淡淡的学习、工作、生活中,我们使用到自我评价的地方非常多,自我评价不仅影响社会中人与人的交往方式,而且影响社会中人的心理健康程度,影响人的价值观和人生观的合理程度。那要怎么写好自我评价呢?以下是小编收集整理的应届毕业生的面试自我评价,欢迎大家借鉴...
-
大学生面试自我评价
无论是在学校还是在社会中,我们会经常用到自我评价,自我评价是个人对自己思想、愿望、行为和个性特点的判断和评价。那么问题来了,到底应如何写一份恰当的自我评价呢?以下是小编精心整理的大学生面试自我评价,欢迎阅读,希望大家能够喜欢。大学生面试自我评价篇1我是...