zoukankan      html  css  js  c++  java
  • oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY

    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<to_date('04-11月-1980')-100  <="" div="">
     
    SELECT empno,ename FROM emp WHERE hiredate<to_date('04-11月-1980')-100< div="">
    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中不出现的雇员职务 
  • 相关阅读:
    字符编码相关
    函数之形参与实参
    文件操作模式
    函数对象,名称空间,作用域,和闭包
    吴裕雄天生自然SPRINGBOOT开发实战处理'spring.datasource.url' is not specified and no embedded datasource could be autoconfigured
    吴裕雄天生自然SPRINGBOOT开发实战处理XXXX that could not be found.
    吴裕雄天生自然SPRINGBOOT开发实战SpringBoot HTML表单登录
    吴裕雄天生自然SPRINGBOOT开发实战SpringBoot REST示例
    吴裕雄天生自然SpringBoot开发实战学习笔记处理 Could not write metadata for '/Servers'.metadata\.plugins\org.eclipse.core.resources\.projects\Servers\.markers.snap (系统找不到指定的路径。)
    吴裕雄天生自然SPRINGBOOT开发实战SpringBoot Tomcat部署
  • 原文地址:https://www.cnblogs.com/JSWBK/p/4992260.html
Copyright © 2011-2022 走看看