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
3:找出那些工資高於他們所在部門的平均工資的員工。
(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.
相關文章
-
php mssql 數據庫分頁SQL的語句
我們在編寫MIS系統和Web應用程序等系統時,都涉及到與數據庫的交互,如果數據庫中數據量很大的話,一次檢索所有的'記錄,會佔用系統很大的資源,因此我們常常採用,需要多少數據就只從數據庫中取多少條記錄,即採用分頁語句。根據 -
Oracle 之 SQL面試題
多上網查查 SQL 面試題1.學號(自動編號) 姓名 性別 年齡0001 xw 男 180002 mc 女 160003 ww 男 210004 xw 男 18請寫出實現如下功能的SQL語句:刪除除了學號(自動編號)字段以外,其它字段都相同的宂餘記錄!DELETE FROM -
SQL語句查詢的考試題分析
試卷緊扣教材和考試説明,從考生熟悉的基礎知識入手,多角度、多層次地考查了學生的數學理性思維能力及對數學本質的理解能力,立足基礎,先易後難,難易適中,強調應用,不偏不怪,達到了“考基礎、考能力、考素質”的目標。試卷所涉 -
SQL面試題
1:找出公司裏收入最高的前三名員工:SQL> select rownum, last_name, salary2 from (select last_name, salary3 from s_emp4 order by salary desc)5 where rownum<=3;ROWNUM LAST_NAME SALARY---------- ------------- -
「MySQL」經典面試題
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。下面是小編分享的,歡迎大家閲讀! 經典面試題目1、MySQL的複製原理以及流程基本原理流程,3個線程以及之間的關聯;2、MySQL中myisa -
mysql dba面試題及答案
1, mysql的複製原理以及流程。(1)先問基本原理流程,3個線程以及之間的關聯。(2)再問一致性,延時性,數據恢復。(3)再問各種工作遇到的複製bug的解決方法3,問mysql中varchar與char的區別以及var50)中的30代表的涵義。(1)varc -
騰訊公司費解的sql面試題歸納
今天去騰訊面試了,遇到這麼一道sql方面的題,甚是費解已知 小小+霸霸+王王=小霸王小=?,霸=?,王=?用sql求證大家給點看法分享分享!!!!看了大家這麼多答案最後提醒大家一點是用sql求證 這才是這道題目的重點當然用別的方法 -
sql server dba面試題
erver 2008 R2 on windows server 2008 R2羣集中,有節點A、B,現在需要停機新添加一個節點C進來替換現有節點B,請列出必要的步驟.erver 2008 R2 on windows server 2008 R2羣集中,有節點A、B,A節點內存比B節點內存大一倍,為 -
有關Oracle 數據庫連接查詢SQL語句
內連接(inner join)。外連接:全連接(full join)、左連接(left join)、右連接(right join)。交叉聯接(cross join)。外連接與內連接不一樣,外連接返回的查詢結果中不僅包含符合條件的行,還包括左表(左外連接),右表(右外連接)或者 -
英語面試問題:Which college classes did you like the
[db:qq]