新聞中心
本文與大家共同討論與分享ORACLE SQL的一些常用經(jīng)典查詢,歡迎大家補(bǔ)充,同時(shí)你認(rèn)為有那些經(jīng)典的也可分享出來。在本文中,對每一個(gè)問題,你要是認(rèn)為有什么更好的解決方法也歡迎你及時(shí)提出。交流與分享才能共同進(jìn)步嘛,感謝!

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。
接上四篇:
Oracle SQL:經(jīng)典查詢練手第一篇
Oracle SQL:經(jīng)典查詢練手第二篇
Oracle SQL:經(jīng)典查詢練手第三篇
Oracle SQL:經(jīng)典查詢練手第四篇
本篇數(shù)據(jù)查詢屬于復(fù)雜業(yè)務(wù),難度比較高,請繼續(xù)努力,通過我為大家設(shè)立的這個(gè)系列,循序漸進(jìn),只要你對每一篇,每一個(gè)試題都實(shí)踐測試,認(rèn)真練習(xí)。我相信你對常用、經(jīng)典的、復(fù)雜的SQL已能熟能生巧,信手拈來!
本文使用ORACLE自帶的人力資源(HR)實(shí)例數(shù)據(jù),本文所用表結(jié)構(gòu)如下:
表名:REGIONS
| 序號 | 列名 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 標(biāo)識 | 主鍵 | 允許空 | 默認(rèn)值 | 說明 |
| 1 | REGION_ID | NUMBER | 是 | 否 | |||||
| 2 | REGION_NAME | VARCHAR2 | 25 | 是 |
表名:COUNTRIES
| 序號 | 列名 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 標(biāo)識 | 主鍵 | 允許空 | 默認(rèn)值 | 說明 |
| 1 | COUNTRY_ID | CHAR | 2 | 是 | 否 | ||||
| 2 | COUNTRY_NAME | VARCHAR2 | 40 | 是 | |||||
| 3 | REGION_ID | NUMBER | 是 |
表名:LOCATIONS
| 序號 | 列名 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 標(biāo)識 | 主鍵 | 允許空 | 默認(rèn)值 | 說明 |
| 1 | LOCATION_ID | NUMBER | 4 | 0 | 是 | 否 | |||
| 2 | STREET_ADDRESS | VARCHAR2 | 40 | 是 | |||||
| 3 | POSTAL_CODE | VARCHAR2 | 12 | 是 | |||||
| 4 | CITY | VARCHAR2 | 30 | 否 | |||||
| 5 | STATE_PROVINCE | VARCHAR2 | 25 | 是 | |||||
| 6 | COUNTRY_ID | CHAR | 2 | 是 |
表名:DEPARTMENTS
| 序號 | 列名 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 標(biāo)識 | 主鍵 | 允許空 | 默認(rèn)值 | 說明 |
| 1 | DEPARTMENT_ID | NUMBER | 4 | 0 | 是 | 否 | |||
| 2 | DEPARTMENT_NAME | VARCHAR2 | 30 | 否 | |||||
| 3 | MANAGER_ID | NUMBER | 6 | 0 | 是 | ||||
| 4 | LOCATION_ID | NUMBER | 4 | 0 | 是 |
表名:JOBS
| 序號 | 列名 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 標(biāo)識 | 主鍵 | 允許空 | 默認(rèn)值 | 說明 |
| 1 | JOB_ID | VARCHAR2 | 10 | 是 | 否 | ||||
| 2 | JOB_TITLE | VARCHAR2 | 35 | 否 | |||||
| 3 | MIN_SALARY | NUMBER | 6 | 0 | 是 | ||||
| 4 | MAX_SALARY | NUMBER | 6 | 0 | 是 |
表名:EMPLOYEES
| 序號 | 列名 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 標(biāo)識 | 主鍵 | 允許空 | 默認(rèn)值 | 說明 |
| 1 | EMPLOYEE_ID | NUMBER | 6 | 0 | 是 | 否 | |||
| 2 | FIRST_NAME | VARCHAR2 | 20 | 是 | |||||
| 3 | LAST_NAME | VARCHAR2 | 25 | 否 | |||||
| 4 | VARCHAR2 | 25 | 否 | ||||||
| 5 | PHONE_NUMBER | VARCHAR2 | 20 | 是 | |||||
| 6 | HIRE_DATE | DATE | 7 | 否 | |||||
| 7 | JOB_ID | VARCHAR2 | 10 | 否 | |||||
| 8 | SALARY | NUMBER | 8 | 2 | 是 | ||||
| 9 | COMMISSION_PCT | NUMBER | 2 | 2 | 是 | ||||
| 10 | MANAGER_ID | NUMBER | 6 | 0 | 是 | ||||
| 11 | DEPARTMENT_ID | NUMBER | 4 | 0 | 是 |
ER圖:
用SQL完成以下問題列表:
- 哪些部門的人數(shù)比90 號部門的人數(shù)多。
- Den(FIRST_NAME)、Raphaely(LAST_NAME)的領(lǐng)導(dǎo)是誰(非關(guān)聯(lián)子查詢)。
- Den(FIRST_NAME)、Raphaely(LAST_NAME) 領(lǐng)導(dǎo)誰(非關(guān)聯(lián)子查詢)。
- Den(FIRST_NAME)、Raphaely(LAST_NAME) 的領(lǐng)導(dǎo)是誰(關(guān)聯(lián)子查詢)。
- Den(FIRST_NAME)、Raphaely(LAST_NAME) 領(lǐng)導(dǎo)誰(關(guān)聯(lián)子查詢)。
- 列出在同一部門共事,入職日期晚但工資高于其他同事的員工:名字、工資、入職日期(關(guān)聯(lián)子查詢)。
- 哪些員工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一個(gè)部門(非關(guān)聯(lián)子查詢)。
- 哪些員工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一個(gè)部門(關(guān)聯(lián)子查詢)。
- Finance部門有哪些職位(非關(guān)聯(lián)子查詢)。
- Finance部門有哪些職位(關(guān)聯(lián)子查詢)。
#p#
- /*--------1、哪些部門的人數(shù)比90號部門的人數(shù)多。---------*/
- SQL> SELECT DEPARTMENT_ID,COUNT(*) FROM EMPLOYEES
- 2 GROUP BY DEPARTMENT_ID
- 3 HAVING COUNT(*) >
- 4 (SELECT COUNT(*) FROM EMPLOYEES
- 5 WHERE DEPARTMENT_ID = 90
- 6 );
- DEPARTMENT_ID COUNT(*)
- ------------- ----------
- 30 6
- 50 45
- 60 5
- 80 34
- 100 6
- /*-------2、Den(FIRST_NAME)、Raphaely(LAST_NAME)的
- 領(lǐng)導(dǎo)是誰(非關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES
- 3 WHERE EMPLOYEE_ID =
- 4 (SELECT MANAGER_ID FROM EMPLOYEES
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 );
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Steven King
- /*-------3、Den(FIRST_NAME)、Raphaely(LAST_NAME)領(lǐng)導(dǎo)誰(非關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES
- 3 WHERE MANAGER_ID IN
- 4 (SELECT EMPLOYEE_ID FROM EMPLOYEES
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 );
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Alexander Khoo
- Shelli Baida
- Sigal Tobias
- Guy Himuro
- Karen Colmenares
- --或者
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES
- 3 WHERE MANAGER_ID =
- 4 (SELECT EMPLOYEE_ID FROM EMPLOYEES
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 );
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Alexander Khoo
- Shelli Baida
- Sigal Tobias
- Guy Himuro
- Karen Colmenares
- /*-------4、Den(FIRST_NAME)、Raphaely(LAST_NAME)的領(lǐng)導(dǎo)是誰(關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES EMP1
- 3 WHERE EXISTS (
- 4 SELECT 1 FROM EMPLOYEES EMP2
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 AND EMP2.MANAGER_ID = EMP1.EMPLOYEE_ID);
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Steven King
- /*-------5、Den(FIRST_NAME)、Raphaely(LAST_NAME)領(lǐng)導(dǎo)誰(關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES EMP1
- 3 WHERE EXISTS (
- 4 SELECT 1 FROM EMPLOYEES EMP2
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 AND EMP2.EMPLOYEE_ID = EMP1.MANAGER_ID);
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Alexander Khoo
- Shelli Baida
- Sigal Tobias
- Guy Himuro
- Karen Colmenares
#p#
- /*-------6、列出在同一部門共事,入職日期晚但工資高于其他同事的員工:
- 名字、工資、入職日期(關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME AS 姓名,
- 2 SALARY AS 工資,HIRE_DATE AS 入職日期
- 3 FROM EMPLOYEES EMP1
- 4 WHERE EXISTS (
- 5 SELECT 1 FROM EMPLOYEES EMP2
- 6 WHERE EMP2.DEPARTMENT_ID = EMP1.DEPARTMENT_ID
- 7 AND EMP1.HIRE_DATE > EMP2.HIRE_DATE
- 8 AND EMP1.SALARY > EMP2.SALARY
- 9 );
- 姓名 工資 入職日期
- ---------------------------------------------- ---------- -----------
- Nancy Greenberg 12000.00 1994-8-17
- Jose Manuel Urman 7800.00 1998-3-7
- Shelli Baida 2900.00 1997-12-24
- Adam Fripp 8200.00 1997-4-10
- Matthew Weiss 8000.00 1996-7-18
- Jennifer Dilly 3600.00 1997-8-13
- Julia Dellinger 3400.00 1998-6-24
- Laura Bissot 3300.00 1997-8-20
- Kevin Mourgos 5800.00 1999-11-16
- Shanta Vollman 6500.00 1997-10-10
- Vance Jones 2800.00 1999-3-17
- Anthony Cabrio 3000.00 1999-2-7
- Girard Geoni 2800.00 2000-2-3
- Douglas Grant 2600.00 2000-1-13
- Donald OConnell 2600.00 1999-6-21
- Randall Perkins 2500.00 1999-12-19
- Martha Sullivan 2500.00 1999-6-21
- Kevin Feeney 3000.00 1998-5-23
- Alana Walsh 3100.00 1998-4-24
- Samuel McCain 3200.00 1998-7-1
- Timothy Gates 2900.00 1998-7-11
- Jean Fleaur 3100.00 1998-2-23
- Winston Taylor 3200.00 1998-1-24
- Michael Rogers 2900.00 1998-8-26
- Britney Everett 3900.00 1997-3-3
- Kelly Chung 3800.00 1997-6-14
- Alexis Bull 4100.00 1997-2-20
- Randall Matos 2600.00 1998-3-15
- John Seo 2700.00 1998-2-12
- Stephen Stiles 3200.00 1997-10-26
- Mozhe Atkinson 2800.00 1997-10-30
- Irene Mikkilineni 2700.00 1998-9-28
- Julia Nayer 3200.00 1997-7-16
- Hazel Philtanker 2200.00 2000-2-6
- Ki Gee 2400.00 1999-12-12
- Steven Markle 2200.00 2000-3-8
- Sarah Bell 4000.00 1996-2-4
- Nandita Sarchand 4200.00 1996-1-27
- Lisa Ozer 11500.00 1997-3-11
- Clara Vishney 10500.00 1997-11-11
- Eleni Zlotkey 10500.00 2000-1-29
- Gerald Cambrault 11000.00 1999-10-15
- Alberto Errazuriz 12000.00 1997-3-10
- Tayler Fox 9600.00 1998-1-24
- Harrison Bloom 10000.00 1998-3-23
- Danielle Greene 9500.00 1999-3-19
- Charles Johnson 7211.00 2000-1-4
- Mattea Marvins 7200.00 2000-1-24
- Ellen Abel 11000.00 1996-5-11
- Karen Partners 13500.00 1997-1-5
- John Russell 14000.00 1996-10-1
- Peter Tucker 10000.00 1997-1-30
- David Bernstein 9500.00 1997-3-24
- Jonathon Taylor 8600.00 1998-3-24
- Alyssa Hutton 8800.00 1997-3-19
- Peter Hall 9000.00 1997-8-20
- Jack Livingston 8000.00 1998-4-23
- Christopher Olsen 8000.00 1998-3-30
- Elizabeth Bates 7300.00 1999-3-24
- William Smith 7400.00 1999-2-23
- Nanette Cambrault 7500.00 1998-12-9
- 61 rows selected
- /*-------7、哪些員工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)
- 不在同一個(gè)部門(非關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES
- 3 WHERE DEPARTMENT_ID <>
- 4 (SELECT DEPARTMENT_ID FROM EMPLOYEES
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 );
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Steven King
- Neena Kochhar
- Lex De Haan
- Alexander Hunold
- Bruce Ernst
- David Austin
- Valli Pataballa
- --等等
- --或者
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES
- 3 WHERE DEPARTMENT_ID NOT IN
- 4 (SELECT DEPARTMENT_ID FROM EMPLOYEES
- 5 WHERE FIRST_NAME = 'Den'
- 6 AND LAST_NAME = 'Raphaely'
- 7 );
- /*-------8、哪些員工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)
- 不在同一個(gè)部門(關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT FIRST_NAME || ' ' || LAST_NAME
- 2 FROM EMPLOYEES EMP1
- 3 WHERE NOT EXISTS (
- 4 SELECT 1 FROM EMPLOYEES EMP2
- 5 WHERE EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID
- 6 AND EMP2.FIRST_NAME = 'Den'
- 7 AND EMP2.LAST_NAME = 'Raphaely');
- FIRST_NAME||''||LAST_NAME
- ----------------------------------------------
- Kimberely Grant
- Lex De Haan
- Neena Kochhar
- Steven King
- Pat Fay
- Michael Hartstein
- Diana Lorentz
- Valli Pataballa
- --等等
- /*-------9、Finance部門有哪些職位(非關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES
- 2 WHERE DEPARTMENT_ID = (
- 3 SELECT DEPARTMENT_ID FROM DEPARTMENTS
- 4 WHERE DEPARTMENT_NAME = 'Finance');
- JOB_ID
- ----------
- FI_ACCOUNT
- FI_MGR
- --或者
- SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES
- 2 WHERE DEPARTMENT_ID IN (
- 3 SELECT DEPARTMENT_ID FROM DEPARTMENTS
- 4 WHERE DEPARTMENT_NAME = 'Finance');
- JOB_ID
- ----------
- FI_ACCOUNT
- FI_MGR
- /*-------10、Finance部門有哪些職位(關(guān)聯(lián)子查詢)。---------*/
- SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES
- 2 WHERE EXISTS(
- 3 SELECT 1 FROM DEPARTMENTS
- 4 WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID
- 5 AND DEPARTMENTS.DEPARTMENT_NAME = 'Finance');
- JOB_ID
- ----------
- FI_ACCOUNT
- FI_MGR
原文鏈接:http://www.cnblogs.com/huyong/archive/2011/06/27/2090980.html
【編輯推薦】
- PL/SQL開發(fā)中動(dòng)態(tài)SQL的使用與過程分頁
- 詳解Oracle的幾種分頁查詢語句
- Oracle分頁小談
- 簡單說說Oracle分區(qū)
- Oracle數(shù)據(jù)庫日常維護(hù)知識總結(jié)
分享名稱:OracleSQL:經(jīng)典查詢練手第五篇
瀏覽地址:http://fisionsoft.com.cn/article/dhcohge.html


咨詢
建站咨詢
