oracle查询排序asc/desc 多列 order by
生活随笔
收集整理的這篇文章主要介紹了
oracle查询排序asc/desc 多列 order by
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
查詢結果的排序?
顯示EMP表中不同的部門編號。?
如果要在查詢的同時排序顯示結果,可以使用如下的語句:?
Sql代碼 SELECT?字段列表?FROM?表名?WHERE?條件 ?? ????????ORDER?BY?字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];??
SELECT 字段列表 FROM 表名 WHERE 條件 ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];
ORDER BY從句后跟要排序的列。ORDER BY 從句出現在SELECT語句的最后。?
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序順序,默認的排序順序為升序ASC。如果要降序,必須書寫DESC關鍵字?
1.升序排序?
【訓練1】 查詢雇員姓名和工資,并按工資從小到大排序。?
輸入并執行查詢:?
Sql代碼 SELECT?ename, sal?FROM?emp?ORDER?BY?sal;??
SELECT ename, sal FROM emp ORDER BY sal;
執行結果為:?
Sql代碼 ENAME???????????? SAL ?? ????????------------- -------------------- ?? ???????? SMITH????????????? 800 ?? ???????? JAMES????????????? 950??
ENAME SAL ------------- -------------------- SMITH 800 JAMES 950
注意:若省略ASC和DESC,則默認為ASC,即升序排序。?
2.降序排序?
【訓練2】 查詢雇員姓名和雇傭日期,并按雇傭日期排序,后雇傭的先顯示。?
輸入并執行查詢:?
Sql代碼 SELECT?ename,hiredate?FROM?emp?ORDER?BY?hiredate?DESC;??
SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;
結果如下:?
Sql代碼 ENAME??????? HIREDATE ?? ????????------------- ----------------------- ?? ???????? ADAMS??????? 23-5月 -87 ?? ???????? SCOTT??????? 19-4月 -87 ?? MILLER?????? 23-1月 -82 ?? ???????? JAMES??????? 03-12月-81 ?? ???????? FORD???????? 03-12月-81??
ENAME HIREDATE ------------- ----------------------- ADAMS 23-5月 -87 SCOTT 19-4月 -87MILLER 23-1月 -82 JAMES 03-12月-81 FORD 03-12月-81
注意: DESC表示降序排序,不能省略。?
3.多列排序?
可以按多列進行排序,先按第一列,然后按第二列、第三列......。?
【訓練3】 查詢雇員信息,先按部門從小到大排序,再按雇傭時間的先后排序。?
輸入并執行查詢:?
Sql代碼 SELECT?ename,deptno,hiredate?FROM?emp?ORDER?BY?deptno,hiredate;??
SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;
結果如下:?
Sql代碼 ENAME??????? DEPTNO HIREDATE ?? ????????---------------- ----------------- --------------- ?? ???????? CLARK?????????????????? 10 09-6月 -81 ?? ???????? KING??????????????????? 10 17-11月-81 ?? ???????? MILLER????????????????? 10 23-1月 -82 ?? ???????? SMITH?????????????????? 20 17-12月-80 ?? ???????? JONES?????????????????? 20 02-4月 -81 ?? ???????? FORD??????????????????? 20 03-12月-81 ?? ???????? SCOTT?????????????????? 20 19-4月 -87??
ENAME DEPTNO HIREDATE ---------------- ----------------- --------------- CLARK 10 09-6月 -81 KING 10 17-11月-81 MILLER 10 23-1月 -82 SMITH 20 17-12月-80 JONES 20 02-4月 -81 FORD 20 03-12月-81 SCOTT 20 19-4月 -87
說明:該排序是先按部門升序排序,部門相同的情況下,再按雇傭時間升序排序。?
4.在排序中使用別名?
如果要對計算列排序,可以為計算列指定別名,然后按別名排序。?
【訓練4】 按工資和工作月份的乘積排序。?
輸入并執行查詢:?
Sql代碼 SELECT?empno, ename, sal*Months_between(sysdate,hiredate)?AS?total?FROM?emp ?? ????????ORDER?BY?total;??
SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp ORDER BY total;
執行結果為:?
Sql代碼 EMPNO ENAME????????? TOTAL ?? ????------------ ------------- ---------------------- ?? ???????? 7876???? ADAMS??????? 221526.006 ?? ???????? 7369???? SMITH??????? 222864.661 ?? ???????? 7900???? JAMES??????? 253680.817 ?? ????????? 7654??? MARTIN?????? 336532.484??
EMPNO ENAME TOTAL ------------ ------------- ---------------------- 7876 ADAMS 221526.006 7369 SMITH 222864.661 7900 JAMES 253680.817 7654 MARTIN 336532.484
sysdate獲取當前日期。?
練習題:?
1.SQL語言中用來創建、刪除及修改數據庫對象的部分被稱為:?
A. 數據庫控制語言(DCL)?
B. 數據庫定義語言(DDL)?
C. 數據庫操縱語言(DML)?
D. 數據庫事務處理語言?
2.執行以下查詢,表頭的顯示為:?
??? Sql代碼 SELECT?sal "Employee Salary"?FROM?emp??
SELECT sal "Employee Salary" FROM emp
???? A. EMPLOYEE SALARY B. employee salary?
???? C. Employee Salary D. "Employee Salary“?
3.執行如下兩個查詢,結果為:?
Sql代碼 SELECT?ename?name,sal salary?FROM?emp?order?by?salary; ?? ????????SELECT?ename?name,sal "SALARY"?FROM?emp?order?by?sal?ASC;??
SELECT ename name,sal salary FROM emp order by salary; SELECT ename name,sal "SALARY" FROM emp order by sal ASC;
A. 兩個查詢結果完全相同?
B. 兩個查詢結果不相同?
C. 第一個查詢正確,第二個查詢錯誤?
D. 第二個查詢正確,第一個查詢錯誤?
4.參考本章的emp表的內容執行下列查詢語句,出現在第一行上的人是:?
Sql代碼 SELECT?ename?FROM?emp?WHERE?deptno=10?ORDER?BY?sal?DESC;??
SELECT ename FROM emp WHERE deptno=10 ORDER BY sal DESC;
A. SMITH B. KING?
C. MILLER D. CLARK?
5.哪個函數與||運算有相同的功能:?
A. LTRIM B. CONCAT?
C. SUBSTR D. INSTR?
6.執行以下語句后,正確的結論是:?
Sql代碼 SELECT?empno,ename?FROM?emp?WHERE?hiredate<to_date('04-11月-1980')-100??
SELECT empno,ename FROM emp WHERE hiredate<to_date('04-11月-1980')-100
A. 顯示給定日期后100天以內雇傭的雇員信息?
B. 顯示給定日期前100天以內雇傭的雇員信息?
C. 顯示給定日期100天以后雇傭的雇員信息?
D. 顯示給定日期100天以前雇傭的雇員信息?
7.執行以下語句出錯的行是:?
????? Sql代碼 SELECT?deptno,max(sal)?FROM?emp ?? ?????????????WHERE?job IN('CLERK','SALEMAN','ANALYST') ?? ?????????????GROUP?BY?deptno ?? ??????????????HAVING?sal>1500;??
SELECT deptno,max(sal) FROM emp WHERE job IN('CLERK','SALEMAN','ANALYST') GROUP BY deptno HAVING sal>1500;
A. 第一行 B. 第二行?
C. 第三行 D. 第四行?
8.執行以下語句出錯的行是:?
Sql代碼 SELECT?deptno,max(avg(sal)) ?? ????????FROM?emp ?? ????????WHERE?sal>1000 ?? ????????Group?by?deptno;??
SELECT deptno,max(avg(sal)) FROM emp WHERE sal>1000 Group by deptno;
A. 第一行 B. 第二行?
C. 第三行 D. 第四行?
9.執行以下語句出錯的行是:?
Sql代碼 SELECT?deptno,dname,ename,sal ?? FROM?emp,dept ?? WHERE?emp.deptno=dept.deptno ?? AND sal>1000;??
SELECT deptno,dname,ename,sal FROM emp,deptWHERE emp.deptno=dept.deptnoAND sal>1000;
A. 第一行 B. 第二行?
C. 第三行 D. 第四行?
10. 以下語句出錯,哪種改動能夠正確執行:?
Sql代碼 SELECT??? deptno,?max(sal) ?? FROM?emp ?? GROUP?BY?deptno ?? WHERE???max(sal)>2500;??
SELECT deptno, max(sal)FROM empGROUP BY deptnoWHERE max(sal)>2500;
A. 將WHERE和GROUP BY 語句順序調換一下?
B. 將WHERE max(sal)>2500語句改成HAVING max(sal)>2500?
C. 將WHERE max(sal)>2500語句改成WHERE sal>2500?
D. 將WHERE max(sal)>2500語句改成HAVING sal>2500?
11. 以下語句的作用是:?
Sql代碼 SELECT?ename,sal?FROM?emp ?? ????????WHERE?sal<(SELECT?min(sal)?FROM?emp)+1000;??
SELECT ename,sal FROM emp WHERE sal<(SELECT min(sal) FROM emp)+1000;
A. 顯示工資低于1000元的雇員信息?
B. 將雇員工資小于1000元的工資增加1000后顯示?
C. 顯示超過最低工資1000元的雇員信息?
D. 顯示不超過最低工資1000元的雇員信息?
12. 以下語句的作用是:?
Sql代碼 SELECT?? job?FROM?emp?WHERE?deptno=10 ?? ???????? MINUS ?? ????????SELECT?? job?FROM?emp?WHERE?deptno=20;??
SELECT job FROM emp WHERE deptno=10 MINUS SELECT job FROM emp WHERE deptno=20;
A. 顯示部門10的雇員職務和20的雇員職務?
B. 顯示部門10和部門20共同的雇員職務?
C. 顯示部門10和部門20不同的雇員職務?
D. 顯示在部門10中出現,在部門20中不出現的雇員職務
顯示EMP表中不同的部門編號。?
如果要在查詢的同時排序顯示結果,可以使用如下的語句:?
Sql代碼
ORDER BY從句后跟要排序的列。ORDER BY 從句出現在SELECT語句的最后。?
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序順序,默認的排序順序為升序ASC。如果要降序,必須書寫DESC關鍵字?
1.升序排序?
【訓練1】 查詢雇員姓名和工資,并按工資從小到大排序。?
輸入并執行查詢:?
Sql代碼
執行結果為:?
Sql代碼
注意:若省略ASC和DESC,則默認為ASC,即升序排序。?
2.降序排序?
【訓練2】 查詢雇員姓名和雇傭日期,并按雇傭日期排序,后雇傭的先顯示。?
輸入并執行查詢:?
Sql代碼
結果如下:?
Sql代碼
注意: DESC表示降序排序,不能省略。?
3.多列排序?
可以按多列進行排序,先按第一列,然后按第二列、第三列......。?
【訓練3】 查詢雇員信息,先按部門從小到大排序,再按雇傭時間的先后排序。?
輸入并執行查詢:?
Sql代碼
結果如下:?
Sql代碼
說明:該排序是先按部門升序排序,部門相同的情況下,再按雇傭時間升序排序。?
4.在排序中使用別名?
如果要對計算列排序,可以為計算列指定別名,然后按別名排序。?
【訓練4】 按工資和工作月份的乘積排序。?
輸入并執行查詢:?
Sql代碼
執行結果為:?
Sql代碼
sysdate獲取當前日期。?
練習題:?
1.SQL語言中用來創建、刪除及修改數據庫對象的部分被稱為:?
A. 數據庫控制語言(DCL)?
B. 數據庫定義語言(DDL)?
C. 數據庫操縱語言(DML)?
D. 數據庫事務處理語言?
2.執行以下查詢,表頭的顯示為:?
??? Sql代碼
???? A. EMPLOYEE SALARY B. employee salary?
???? C. Employee Salary D. "Employee Salary“?
3.執行如下兩個查詢,結果為:?
Sql代碼
A. 兩個查詢結果完全相同?
B. 兩個查詢結果不相同?
C. 第一個查詢正確,第二個查詢錯誤?
D. 第二個查詢正確,第一個查詢錯誤?
4.參考本章的emp表的內容執行下列查詢語句,出現在第一行上的人是:?
Sql代碼
A. SMITH B. KING?
C. MILLER D. CLARK?
5.哪個函數與||運算有相同的功能:?
A. LTRIM B. CONCAT?
C. SUBSTR D. INSTR?
6.執行以下語句后,正確的結論是:?
Sql代碼
A. 顯示給定日期后100天以內雇傭的雇員信息?
B. 顯示給定日期前100天以內雇傭的雇員信息?
C. 顯示給定日期100天以后雇傭的雇員信息?
D. 顯示給定日期100天以前雇傭的雇員信息?
7.執行以下語句出錯的行是:?
????? Sql代碼
A. 第一行 B. 第二行?
C. 第三行 D. 第四行?
8.執行以下語句出錯的行是:?
Sql代碼
A. 第一行 B. 第二行?
C. 第三行 D. 第四行?
9.執行以下語句出錯的行是:?
Sql代碼
A. 第一行 B. 第二行?
C. 第三行 D. 第四行?
10. 以下語句出錯,哪種改動能夠正確執行:?
Sql代碼
A. 將WHERE和GROUP BY 語句順序調換一下?
B. 將WHERE max(sal)>2500語句改成HAVING max(sal)>2500?
C. 將WHERE max(sal)>2500語句改成WHERE sal>2500?
D. 將WHERE max(sal)>2500語句改成HAVING sal>2500?
11. 以下語句的作用是:?
Sql代碼
A. 顯示工資低于1000元的雇員信息?
B. 將雇員工資小于1000元的工資增加1000后顯示?
C. 顯示超過最低工資1000元的雇員信息?
D. 顯示不超過最低工資1000元的雇員信息?
12. 以下語句的作用是:?
Sql代碼
A. 顯示部門10的雇員職務和20的雇員職務?
B. 顯示部門10和部門20共同的雇員職務?
C. 顯示部門10和部門20不同的雇員職務?
D. 顯示在部門10中出現,在部門20中不出現的雇員職務
總結
以上是生活随笔為你收集整理的oracle查询排序asc/desc 多列 order by的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算管理三利器:Nagios、Gang
- 下一篇: oracle之Flash Recover