网站设计首页,济南软件开发工资一般多少,陕西网页制作公司,页面设计怎么设计[推荐]ORACLE SQL#xff1a;经典查询练手第三篇(不懂装懂#xff0c;永世饭桶#xff01;) [推荐]ORACLE SQL#xff1a; 经典查询练手第三篇(不懂装懂#xff0c;永世饭桶#xff01;) ——通过知识共享树立个人品牌。 本文与大家共同讨论与分享ORACLE SQL的一些常用经… [推荐]ORACLE SQL经典查询练手第三篇(不懂装懂永世饭桶) [推荐]ORACLE SQL 经典查询练手第三篇(不懂装懂永世饭桶) ——通过知识共享树立个人品牌。 本文与大家共同讨论与分享ORACLE SQL的一些常用经典查询欢迎大家补充同时你认为有那些经典的也可分享出来。在本文中对每一个问题你要是认为有什么更好的解决方法也欢迎你及时提出。交流与分享才能共同进步嘛感谢 接上两篇: [推荐]ORACLE SQL经典查询练手第一篇 [推荐]ORACLE SQL经典查询练手第二篇 本篇相对上两篇来说难度有所增加继续努力通过我为大家设立的这个系列只要你对每一篇每一个试题都实践测试认真练习。我相信你对常用、经典的SQL已能熟能生巧信手拈来 本文使用ORACLE自带的人力资源HR实例数据本文所用表结构如下 HR.EMPLOYEES员工表结构如下 HR.DEPARTMENTS表结构如下 HR.REGIONS表结构如下 SQL DESC HR.REGIONS;Name Type Nullable Default Comments ----------- ------------ -------- ------- -------- REGION_ID NUMBER REGION_NAME VARCHAR2(25) Y 用SQL完成以下问题列表 1. 让SELECT TO_CHAR(SALARY,L99,999.99) FROM HR.EMPLOYEES WHERE ROWNUM 5 输出结果的货币单位是和$。2. 列出前五位每个员工的名字工资、涨薪后的的工资涨幅为8%以“元”为单位进行四舍五入。3. 找出谁是最高领导将名字按大写形式显示。4. 找出First_Name 为DavidLast_Name为Austin 的直接领导名字。5. First_Name 为AlexanderLast_Name为Hunold领导谁。谁向David 报告。6. 哪些员工的工资高于他直接上司的工资列出员工的名字和工资上司的名字和工资。7. 哪些员工和Chen(LAST_NAME)同部门。8. 哪些员工跟De Haan(LAST_NAME)做一样职位。9. 哪些员工跟Hall(LAST_NAME)不在同一个部门。10. 哪些员工跟WilliamFIRST_NAME、Smith(LAST_NAME)做不一样的职位。11. 显示有提成的员工的信息名字、提成、所在部门名称、所在地区的名称。12. 显示Executive部门有哪些职位。13. 整个公司中最高工资和最低工资相差多少。14. 提成大于0 的人数。15. 显示整个公司的最高工资、最低工资、工资总和、平均工资保留到整数位。16. 整个公司有多少个领导。17. 列出在同一部门入职日期晚但工资高于其他同事的员工名字、工资、入职日期。 各试题解答如下欢迎大家指出不同的方法或建议 /*--------1、改变NLS_LANG 的值让SELECT TO_CHAR(SALARY,L99,999.99) FROM HR.EMPLOYEES WHERE ROWNUM 5 输出结果的货币单位是和$。---------*/-----在没有设置NLS_LANG的情况下SQL SELECT TO_CHAR(SALARY,L99,999.99) 2 FROM HR.EMPLOYEES 3 WHERE ROWNUM 5;TO_CHAR(SALARY,L99,999.99)---------------------------- 24,000.00 20,000.00 20,000.00 9,000.00SQL SELECT TO_CHAR(SALARY,$99,999.99) 2 FROM HR.EMPLOYEES 3 WHERE ROWNUM 5; TO_CHAR(SALARY,$99,999.99)---------------------------- $24,000.00 $20,000.00 $20,000.00 $9,000.00/*--说明对于$99,999.99格式符L表示强制显示当地货币符号$: 表示显示美元符号9: 表示一个数字0: 表示强制0显示.: 表示一个小数点,: 表示一个千位分隔符--------------*//*--------2、列出前五位每个员工的名字工资、涨薪后的的工资涨幅为8%以“元”为单位进行四舍五入。---------*/SQL SELECT FIRST_NAME,SALARY,ROUND(SALARY * 1.08) FROM HR.EMPLOYEES 2 WHERE ROWNUM 5; FIRST_NAME SALARY ROUND(SALARY*1.08)-------------------- ---------- ------------------Steven 24000.00 25920Neena 20000.00 21600Lex 20000.00 21600Alexander 9000.00 9720Bruce 6000.00 6480/*--------3、找出谁是最高领导将名字按大写形式显示。---------*/SQL SELECT UPPER(FIRST_NAME || || LAST_NAME) AS NAME 2 FROM HR.EMPLOYEES 3 WHERE MANAGER_ID IS NULL; NAME----------------------------------------------STEVEN KING/*--------4、找出David 的直接领导的名字。---------*/SQL SELECT UPPER(FIRST_NAME || || LAST_NAME) AS NAME 2 FROM HR.EMPLOYEES 3 WHERE EMPLOYEE_ID IN( 4 SELECT MANAGER_ID FROM HR.EMPLOYEES 5 WHERE FIRST_NAME David AND LAST_NAME Austin); NAME----------------------------------------------ALEXANDER HUNOLD--或采用以下方法SQL SELECT UPPER( EMP1.FIRST_NAME || || EMP1.LAST_NAME) AS NAME 2 FROM HR.EMPLOYEES EMP1,HR.EMPLOYEES EMP2 3 WHERE EMP1.EMPLOYEE_ID EMP2.MANAGER_ID 4 AND EMP2.FIRST_NAME David AND EMP2.LAST_NAME Austin; NAME----------------------------------------------ALEXANDER HUNOLD /*--------5、First_Name 为AlexanderLAST_NAME为Hunold领导谁。谁向David 报告。---------*/SQL SELECT UPPER(FIRST_NAME || || LAST_NAME) AS NAME 2 FROM HR.EMPLOYEES 3 WHERE MANAGER_ID IN( 4 SELECT EMPLOYEE_ID FROM HR.EMPLOYEES 5 WHERE FIRST_NAME Alexander AND LAST_NAME Hunold); NAME----------------------------------------------BRUCE ERNSTDAVID AUSTINVALLI PATABALLADIANA LORENTZ--或采用以下方法SQL SELECT UPPER( EMP1.FIRST_NAME || || EMP1.LAST_NAME) AS NAME 2 FROM HR.EMPLOYEES EMP1,HR.EMPLOYEES EMP2 3 WHERE EMP1.MANAGER_ID EMP2.EMPLOYEE_ID 4 AND EMP2.FIRST_NAME Alexander AND EMP2.LAST_NAME Hunold; NAME----------------------------------------------BRUCE ERNSTDAVID AUSTINVALLI PATABALLADIANA LORENTZ/*--------6、哪些员工的工资高于他直接上司的工资列出员工的名字和工资上司的名字和工资。---------*/SQL SELECT E.FIRST_NAME,E.SALARY,M.FIRST_NAME,M.SALARY 2 FROM EMPLOYEES E,EMPLOYEES M 3 WHERE E.MANAGER_ID M.EMPLOYEE_ID AND E.SALARY M.SALARY; FIRST_NAME SALARY FIRST_NAME SALARY-------------------- ---------- -------------------- ----------Lisa 11500.00 Gerald 11000.00Ellen 11000.00 Eleni 10500.00--要是只列出员工的名字与工资的话还可以这样SQL SELECT E.FIRST_NAME,E.SALARY 2 FROM EMPLOYEES E WHERE E.SALARY 3 (SELECT M.SALARY FROM EMPLOYEES M 4 WHERE E.MANAGER_ID M.EMPLOYEE_ID); FIRST_NAME SALARY-------------------- ----------Lisa 11500.00Ellen 11000.00/*--------7、哪些员工和Chen(LAST_NAME)同部门。---------*/SQL SELECT FIRST_NAME FROM EMPLOYEES 2 WHERE DEPARTMENT_ID IN 3 (SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE LAST_NAME Chen) 4 AND LAST_NAME Chen; FIRST_NAME--------------------NancyDanielIsmaelJose ManuelLuis--或者--SQL SELECT E1.FIRST_NAME FROM EMPLOYEES E1,EMPLOYEES E2 2 WHERE E1.DEPARTMENT_ID E2.DEPARTMENT_ID 3 AND E2.LAST_NAME Chen AND E1.LAST_NAME Chen; FIRST_NAME--------------------NancyDanielIsmaelJose ManuelLuis/*--------8、哪些员工跟De Haan(LAST_NAME)做一样职位。---------*/SQL SELECT FIRST_NAME FROM EMPLOYEES 2 WHERE JOB_ID IN 3 (SELECT JOB_ID FROM EMPLOYEES 4 WHERE LAST_NAME De Haan) 5 AND LAST_NAME De Haan; FIRST_NAME--------------------Neena--或者--SQL SELECT E1.FIRST_NAME FROM EMPLOYEES E1,EMPLOYEES E2 2 WHERE E1.JOB_ID E2.JOB_ID 3 AND E2.LAST_NAME De Haan AND E1.LAST_NAME De Haan; FIRST_NAME--------------------Neena/*--------9、哪些员工跟Hall(LAST_NAME)不在同一个部门。---------*/SQL SELECT FIRST_NAME || || LAST_NAME FROM HR.EMPLOYEES 2 WHERE DEPARTMENT_ID NOT IN( 3 SELECT DEPARTMENT_ID FROM HR.EMPLOYEES 4 WHERE LAST_NAME Hall); FIRST_NAME||||LAST_NAME----------------------------------------------Steven KingNeena KochharLex De HaanAlexander HunoldBruce ErnstDavid AustinValli PataballaDiana LorentzNancy Greenberg--...初始有72条数据--或者SQL SELECT e1.FIRST_NAME FROM EMPLOYEES e1,EMPLOYEES e2 2 WHERE e1.DEPARTMENT_ID e2.DEPARTMENT_ID() 3 and e2.LAST_NAME() Hall 4 and e2.LAST_NAME IS NULL;/*-------10、哪些员工跟WilliamFIRST_NAME、Smith(LAST_NAME)做不一样的职位。--------*/SQL SELECT FIRST_NAME || || LAST_NAME FROM HR.EMPLOYEES 2 WHERE JOB_ID (SELECT DISTINCT JOB_ID FROM EMPLOYEES 3 WHERE FIRST_NAME William AND LAST_NAME Smith); FIRST_NAME||||LAST_NAME----------------------------------------------Steven KingNeena KochharLex De HaanAlexander Hunold----...初始有77条数据 /*--------11、显示有提成的员工的信息名字、提成、所在部门名称、所在地区的名称。---------*/SQL SELECT E.FIRST_NAME || || E.LAST_NAME AS NAME, 2 E.COMMISSION_PCT,D.DEPARTMENT_NAME,L.CITY 3 FROM HR.EMPLOYEES E,HR.DEPARTMENTS D,HR.LOCATIONS L 4 WHERE E.DEPARTMENT_ID D.DEPARTMENT_ID 5 AND D.LOCATION_ID L.LOCATION_ID 6 AND E.COMMISSION_PCT IS NOT NULL;/*--------12、显示Executive部门有哪些职位。---------*/SQL SELECT DISTINCT E.JOB_ID FROM HR.EMPLOYEES E,HR.DEPARTMENTS D 2 WHERE D.DEPARTMENT_ID E.DEPARTMENT_ID 3 AND D.DEPARTMENT_NAME Executive; JOB_ID----------AD_PRESAD_VP/*--------13、整个公司中最高工资和最低工资相差多少。---------*/SQL SELECT MAX(SALARY) - MIN(SALARY) FROM HR.EMPLOYEES; MAX(SALARY)-MIN(SALARY)----------------------- 21900/*--------14、提成大于0 的人数。---------*/SQL SELECT COUNT(*) AS 提成大小0的人数 FROM HR.EMPLOYEES 2 WHERE COMMISSION_PCT 0; 提成大小0的人数--------------- 35--或者SQL SELECT COUNT(COMMISSION_PCT) AS 提成大小0的人数 2 FROM HR.EMPLOYEES 3 WHERE COMMISSION_PCT 0; 提成大小0的人数--------------- 35/*--------15、显示整个公司的最高工资、最低工资、工资总和、平均工资保留到整数位。---------*/SQL SELECT MAX(NVL(SALARY,0)) AS 最高工资, 2 MIN(NVL(SALARY,0)) AS 最低工资, 3 SUM(NVL(SALARY,0)) AS 工资总和, 4 ROUND(AVG(NVL(SALARY,0))) AS 平均工资 5 FROM HR.EMPLOYEES; 最高工资 最低工资 工资总和 平均工资 ---------- ---------- ---------- --------- 24000 2100 698011 6523/*--------16、整个公司有多少个领导。---------*/SQL SELECT COUNT(DISTINCT(MANAGER_ID)) FROM HR.EMPLOYEES 2 WHERE MANAGER_ID IS NOT NULL; COUNT(DISTINCT(MANAGER_ID))--------------------------- 18/*--------17、列出在同一部门入职日期晚但工资高于其他同事的员工名字、工资、入职日期。---------*/SQL SELECT DISTINCT E1.FIRST_NAME || || E1.LAST_NAME AS 姓名, 2 E1.SALARY AS 工资,E1.HIRE_DATE AS 入职日期 3 FROM HR.EMPLOYEES E1,HR.EMPLOYEES E2 4 WHERE E1.DEPARTMENT_ID E2.DEPARTMENT_ID 5 AND E1.HIRE_DATE E2.HIRE_DATE 6 AND E1.SALARY E2.SALARY 7 ORDER BY 工资 DESC;姓名 工资 入职日期---------------------------------------------- ---------- -----------John Russell 14000.00 1996-10-1Karen Partners 13500.00 1997-1-5Alberto Errazuriz 12000.00 1997-3-10Nancy Greenberg 12000.00 1994-8-17Lisa Ozer 11500.00 1997-3-11Ellen Abel 11000.00 1996-5-11Gerald Cambrault 11000.00 1999-10-15Clara Vishney 10500.00 1997-11-11Eleni Zlotkey 10500.00 2000-1-29Harrison Bloom 10000.00 1998-3-23Peter Tucker 10000.00 1997-1-30Tayler Fox 9600.00 1998-1-24Danielle Greene 9500.00 1999-3-19David Bernstein 9500.00 1997-3-24Peter Hall 9000.00 1997-8-20Alyssa Hutton 8800.00 1997-3-19Jonathon Taylor 8600.00 1998-3-24Adam Fripp 8200.00 1997-4-10Christopher Olsen 8000.00 1998-3-30Jack Livingston 8000.00 1998-4-23 Matthew Weiss 8000.00 1996-7-18Jose Manuel Urman 7800.00 1998-3-7Nanette Cambrault 7500.00 1998-12-9William Smith 7400.00 1999-2-23Elizabeth Bates 7300.00 1999-3-24Charles Johnson 7211.00 2000-1-4Mattea Marvins 7200.00 2000-1-24Shanta Vollman 6500.00 1997-10-10Kevin Mourgos 5800.00 1999-11-16Nandita Sarchand 4200.00 1996-1-27Alexis Bull 4100.00 1997-2-20Sarah Bell 4000.00 1996-2-4Britney Everett 3900.00 1997-3-3Kelly Chung 3800.00 1997-6-14Jennifer Dilly 3600.00 1997-8-13Julia Dellinger 3400.00 1998-6-24Laura Bissot 3300.00 1997-8-20Julia Nayer 3200.00 1997-7-16Samuel McCain 3200.00 1998-7-1Stephen Stiles 3200.00 1997-10-26Winston Taylor 3200.00 1998-1-24 Alana Walsh 3100.00 1998-4-24Jean Fleaur 3100.00 1998-2-23Anthony Cabrio 3000.00 1999-2-7Kevin Feeney 3000.00 1998-5-23Michael Rogers 2900.00 1998-8-26Shelli Baida 2900.00 1997-12-24Timothy Gates 2900.00 1998-7-11Girard Geoni 2800.00 2000-2-3Mozhe Atkinson 2800.00 1997-10-30Vance Jones 2800.00 1999-3-17Irene Mikkilineni 2700.00 1998-9-28John Seo 2700.00 1998-2-12Donald OConnell 2600.00 1999-6-21Douglas Grant 2600.00 2000-1-13Randall Matos 2600.00 1998-3-15Martha Sullivan 2500.00 1999-6-21Randall Perkins 2500.00 1999-12-19Ki Gee 2400.00 1999-12-12Hazel Philtanker 2200.00 2000-2-6Steven Markle 2200.00 2000-3-8 61 rows selected posted on 2011-06-20 12:52 yonghu86 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/huyong/archive/2011/06/20/2085137.html