文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>oracle排序...

oracle排序...

时间:2010-08-11  来源:PerfTest

如果要在查询的同时排序显示结果,可以使用如下的语句:

Sql代码
  1. SELECT 字段列表 FROM 表名 WHERE 条件   
  2.         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代码
  1. SELECT ename, sal FROM emp ORDER BY sal;  
SELECT ename, sal FROM emp ORDER BY sal;

执行结果为:
Sql代码
  1. ENAME            SAL   
  2.         ------------- --------------------   
  3.         SMITH             800   
  4.         JAMES             950  
ENAME            SAL
                ------------- --------------------
                SMITH             800
                JAMES             950

注意:若省略ASC和DESC,则默认为ASC,即升序排序。
2.降序排序 
【训练2】  查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。
输入并执行查询:
Sql代码
  1. SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;  
SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;

结果如下:
Sql代码
  1. ENAME       HIREDATE   
  2.         ------------- -----------------------   
  3.         ADAMS       23-5月 -87   
  4.         SCOTT       19-4月 -87   
  5. MILLER      23-1月 -82   
  6.         JAMES       03-12月-81   
  7.         FORD        03-12月-81  
ENAME       HIREDATE
                ------------- -----------------------
                ADAMS           23-5月 -87
                SCOTT           19-4月 -87
MILLER          23-1月 -82
                JAMES           03-12月-81
                FORD            03-12月-81

注意: DESC表示降序排序,不能省略。
3.多列排序
可以按多列进行排序,先按第一列,然后按第二列、第三列......。
  【训练3】  查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。
输入并执行查询:
Sql代码
  1. SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;  
SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;

结果如下:
Sql代码
  1. ENAME       DEPTNO HIREDATE   
  2.         ---------------- ----------------- ---------------   
  3.         CLARK                  10 09-6月 -81   
  4.         KING                   10 17-11月-81   
  5.         MILLER                 10 23-1月 -82   
  6.         SMITH                  20 17-12月-80   
  7.         JONES                  20 02-4月 -81   
  8.         FORD                   20 03-12月-81   
  9.         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代码
  1. SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp    
  2.         ORDER BY total;  
SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp 
                ORDER BY total;

执行结果为:
Sql代码
  1. EMPNO ENAME         TOTAL   
  2.     ------------ ------------- ----------------------   
  3.         7876    ADAMS       221526.006   
  4.         7369    SMITH       222864.661   
  5.         7900    JAMES       253680.817   
  6.          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代码
  1. 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代码
  1. SELECT ename name,sal salary FROM emp order by salary;   
  2.         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代码
  1. 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代码
  1. 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代码
  1. SELECT deptno,max(sal) FROM emp    
  2.              WHERE job IN('CLERK','SALEMAN','ANALYST')   
  3.              GROUP BY deptno   
  4.               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代码
  1. SELECT deptno,max(avg(sal))    
  2.         FROM emp    
  3.         WHERE sal>1000   
  4.         Group by deptno;  
SELECT deptno,max(avg(sal)) 
                FROM emp 
                WHERE sal>1000
                Group by deptno;

A. 第一行 B. 第二行
C. 第三行 D. 第四行
9.执行以下语句出错的行是:
Sql代码
  1. SELECT deptno,dname,ename,sal    
  2. FROM emp,dept   
  3. WHERE emp.deptno=dept.deptno   
  4. AND sal>1000;  
SELECT deptno,dname,ename,sal 
FROM emp,dept
WHERE emp.deptno=dept.deptno
AND sal>1000;

A. 第一行 B. 第二行
C. 第三行 D. 第四行
10. 以下语句出错,哪种改动能够正确执行:
Sql代码
  1. SELECT   deptno, max(sal)   
  2. FROM emp   
  3. GROUP BY deptno   
  4. WHERE   max(sal)>2500;  
SELECT   deptno, max(sal)
FROM emp
GROUP BY deptno
WHERE   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代码
  1. SELECT ename,sal FROM emp   
  2.         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代码
  1. SELECT  job FROM emp WHERE deptno=10   
  2.         MINUS   
  3.         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中不出现的雇员职务  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载