tofacebook.com -专业IT技术社区 使用oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY【tofacebook.com】 - tofacebook.com-专业IT技术社区
57°

使用oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY【tofacebook.com】

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月 -87
MILLER     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

SELECT empno,ename FROM emp WHERE hiredate

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,dept
WHERE emp.deptno=dept.deptno
AND 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 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代码

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中不出现的雇员职务

已有 0 条评论

    我有话说: