1. 程式人生 > >oracle查詢語句練習題與答案(scott使用者)

oracle查詢語句練習題與答案(scott使用者)

1 找出佣金高於薪金60%的僱員。    
SELECT * FROM emp WHERE comm > (sal * 0.6);	

2 找出部門10中所有經理和部門20中所有辦事員的詳細資料。    
SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER') OR (deptno = 20 AND job = 'CLERK');

3 找出部門10中所有經理,部門20中所有辦事員以及既不是經理又不是辦事員但其薪金大於或等2000的所有僱員的詳細資料。    
   SELECT * FROM emp WHERE (deptno = 10 AND job = 'MANAGER') 
      OR (deptno = 20 AND job = 'CLERK' 
      OR (sal > 2000 AND job NOT IN ('MANAGER','CLERK')));

4 找出收取佣金的僱員的不同工作。    
  SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;

5 找出不收取佣金或收取的佣金低於300的僱員。    
  SELECT * FROM emp WHERE comm IS NULL OR comm < 300;

6 找出各月最後一天受僱的所有僱員。        
  SELECT * FROM emp WHERE LAST_DAY(hiredate) = hiredate;

7 找出晚於26年之前受僱的僱員。    
  SELECT * FROM emp WHERE SYSDATE > ADD_MONTHS(hiredate,26 * 12) ;


8 顯示只有首字母大寫的的所有僱員的姓名。    
  SELECT INITCAP(ename) FROM emp;

9 顯示正好為5個字元的僱員的姓名。    
  SELECT * FROM emp WHERE LENGTH(ename) = 5;

10顯示不帶有“R”的僱員姓名。    
  SELECT * FROM emp WHERE ename NOT LIKE '%R%';

11顯示所有僱員的姓名的前三個字元。    
  SELECT SUBSTR(ename,0,3) FROM emp;

12顯所有僱員的姓名,用a替換所有“A”。    
  SELECT REPLACE(ename,'A','a') FROM emp;

13顯示所有僱員的姓名以及滿10年服務年限的日期。   
  SELECT ename,ADD_MONTHS(hiredate,12 * 10) FROM emp;

14顯示僱員的詳細資料,按姓名排序。    
  SELECT * FROM emp ORDER BY ename;	

15顯示僱員姓名,根據其服務年限,將最老的僱員排在最前面。    
  SELECT * FROM emp ORDER BY hiredate ASC;

16顯示所有僱員的姓名、工作和薪金,按工作的降序排序,而工作按薪金排序。    
  SELECT ename,job,sal FROM emp ORDER BY job DESC,sal DESC;	
 
17顯示所有僱員的姓名和加入公司的年份和月份,按僱員受僱日所在月排序,並將最早年份的專案排在最前面。    
  SELECT ename,TO_CHAR(hiredate,'yyyy-mm') FROM emp ORDER BY TO_CHAR(hiredate,'mm') ASC ,TO_CHAR(hiredate,'yyyy') ASC;

18顯示在一個月為30天的情況下所有僱員的日薪金,取整。    
  SELECT ROUND(sal / 30,0) FROM emp;

19找出在(任何年份的)2月受聘的所有僱員。    
  SELECT * FROM emp WHERE TO_CHAR(hiredate,'mm') = 2;


20對於每個僱員,顯示其加入公司的天數。    
  SELECT CEIL(sysdate-hiredate) FROM emp;

21.找出所有的普通員工:
select * from emp where empno not in(select mgr from emp where mgr is not null)

22.求部門中哪些人的薪水最高:
Select ename,sal from emp join (select max(sal) max_sal,deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno= t.deptno);


23.求部門平均薪水的等級:
Select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal);

24.求部門平均的薪水等級
Select deptno,avg(grade) from (select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal)) t group by deptno;

25.僱員中哪些人是經理人:
Select ename from emp where empno in (select distinct mgr from emp);

26.不準用組函式,求薪水的最高值
Select distinct sal from emp where sal not in (select distinct e1.sal from emp e1 join emp e2 on(e1.sal < e2.sal));

27.求平均薪水最高的部門的部門編號
Select deptno,avg_sal from (select avg(sal) avg_sal,deptno from emp group by deptno) where avg_sal = (select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno));

28.求平均薪水最高的部門的部門名字
select dname from dept where
deptno=(Select deptno from (select avg(sal) 
avg_sal,deptno from emp group by deptno) where avg_sal = (select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno)))

29.求比普通員工的最高薪水還要高的經理人名稱
Select ename from emp where  empno in (select distinct mgr from emp where mgr is not null) and sal >(select max(sal) from emp where empno not in(select distinct mgr from emp where mgr is not null));


相關推薦

oracle查詢語句練習題答案(scott使用者)

1 找出佣金高於薪金60%的僱員。 SELECT * FROM emp WHERE comm > (sal * 0.6); 2 找出部門10中所有經理和部門20中所有辦事員的詳細資料。 SELECT * FROM emp WHERE (deptno

Oracle - 查詢語句 - 分組函數

出現 erb 現在 不同 max 過濾 group cnblogs 語句 /* 分組函數 不能再select子句中出現普通的列,除非這個列在group by中給出 所有的空值都會被分為一組 分組過濾

oracle查詢語句執行順序

lin oracle查詢 etc utl columns contain 處理 text lec 完整的查詢語句類似是這樣的: select ..., ROWNUM from table where <where clause> group by &

MySQL查詢語句練習題

red pre 名稱 distinct 資料 not null cnblogs com group /*1. 查詢出部門編號為30的所有員工*/ /* 分析: 1). 列:沒有說明要查詢的列,所以查詢所有列 2). 表:只一張表,emp 3). 條件:部門編號為30,即d

sql語句練習題答案

統計 not 分數 where ren records else 升序 ble 表結構 創建表數據 SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- -------------------

Oracle - 查詢語句 - 多表關聯查詢

/*         SQL語句的歷史版本         SQL89         比較多       &nb

java程式設計師菜鳥進階(二)oracle基礎詳解(二)oracle查詢語句和資料排序

本文所以練習都是基於oracle自帶提供的一個數據庫進行的。資料庫中包含員工表emp。部門資訊表dept。員工工資工總表下面是三個表的表結構:一:基本查詢語句1.最簡單的查詢所有列語句Select * from emp;2.查詢指定列表的查詢語句Select empno ,e

22:24 2016/6/9 PHP基礎練習題答案詳解

第一章 開始編寫PHP程式 以下是練習題: 一、選擇題1.下列哪一項屬於伺服器端Scripts?( ) A.VBScript B.JavaScript C.Java Applet D.PHP 2

Oracle 條件語句——decodecase

decode 語法如下: decode(某列名,條件1,結果1,條件2,結果2….條件n,結果n,預設值); 注意: 1、某條件與對應的結果成對出現,滿足條件1則返回結果1,滿足條件2則返回結果

MySQL查詢語句練習題45題版

整理了一些網上的練習題。 設有一資料庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師資訊表(Teacher)。表結構及資料如下,請完成題目。 表(一)Student (學生表) : 屬性名 資料型

SQL查詢語句練習題27道

course.Cno IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept='計算機系'))

45個非常有用的Oracle查詢語句

這裡我們介紹的是 40+ 個非常有用的 Oracle 查詢語句,主要涵蓋了日期操作,獲取伺服器資訊,獲取執行狀態,計算資料庫大小等等方面的查詢,這些是所有 Oracle 開發者都必備的技能! 1. 日期/時間 相關查詢 1.1. 獲取當前月份的第一天 執行這個命令能快速返

45個常用的Oracle查詢語句

這裡我們介紹的是 40+ 個非常有用的 Oracle 查詢語句,主要涵蓋了日期操作,獲取伺服器資訊,獲取執行狀態,計算資料庫大小等等方面的查詢。這些是所有 Oracle 開發者都必備的技能,所以快快收藏吧! 日期/時間 相關查詢 獲取當前月份的第一

Oracle查詢語句中算術運算子的使用

1、運算子的分類和優先順序(1)、算術運算子(+、-、*、/):可以運用到數字和日期的列上<1>、具體需求:例:檢視scott.emp表中的員工年收入(select sal * 12 from emp;)(2)、優先順序:和數學裡面的規則一樣例:檢視scott.e

oracle資料庫經典練習題答案

           最近下載了一套oracle資料庫習題(無答案),本人自己在oracle上練習得到的答案,如果不對的地方,請不要見怪。儲存到部落格方便自己以後查閱。 相關表: /*學生表*/ create table student ( sno varchar2

查詢語句SqlServerExcel資料匯入匯出

一、Excel檔案在sqlserver資料庫的本地  1、啟用Ad Hoc Distributed Queries的方法exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad

MySQL基礎查詢語句練習題【非原創】

Sutdent表的定義 欄位名 欄位描述 資料型別 主鍵 外來鍵 非空 唯一 自增 Id 學號 I

SQL查詢語句練習題20道

資料庫中有三張表,分別為student,course,SC(即學生表,課程表,選課表) //三張表截圖如下: --1.分別查詢學生表和學生修課表中的全部資料。 SELECT * FROM student--查詢學生表 SELECT * FROM cour

Oracle資料庫分頁查詢語句優化

回顧了之前做的專案,看到查詢分頁功能,發現有可以優化的地方。 總的來說優化過程有三個階段: 一、 select * from (select A.*, rownum rn from (select * from table_name)A) where

MySQLOracle的分頁查詢語句

一、MySQL MYSQL中有特定的分頁查詢語句,該sql語句只能在MySQL中使用 select * from t_customer limit ?,? 該sql語句的意思是,從第幾行開始,然後取多少行,MySQL中第一行的下標是0 例如:我要取資料庫中的前10行資料,我