oracle查询排序asc/desc 多列 order by

前端之家收集整理的这篇文章主要介绍了oracle查询排序asc/desc 多列 order by前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:oracle查询排序asc/desc 多列 order by

查询结果的排序


显示EMP表中不同的部门编号。
如果要在查询的同时排序显示结果,可以使用如下的语句:
  1. SELECT字段列表FROM表名WHERE条件
  2. ORDERBY字段名1 [ASC|DESC][,字段名2 [DESC]...];
  1. SELECT字段列表FROM表名WHERE条件
  2. ORDERBY字段名1[ASC|DESC][,字段名2[DESC]...];

ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序, 默认的排序顺序为升序ASC 。如果要降序,必须书写DESC关键字
1.升序排序
【训练1】 查询雇员姓名和工资,并按工资从小到大排序。
输入并执行查询
SELECTename,salFROMempORDERBYsal;
copy
    SELECTename,153); font-weight:bold; background-color:inherit">FROMempBYsal;

执行结果为:
ENAME SAL
  • ------------- --------------------
  • SMITH 800
  • JAMES 950
  • copy
      ENAMESAL
    1. ---------------------------------
    2. SMITH800
    3. JAMES950

    注意:若省略ASC和DESC,则默认为ASC,即升序排序。
    2.降序排序
    【训练2】 查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示
    BYhiredateDESC;
    copy
      BYhiredateDESC;

    结果如下:
    ENAME HIREDATE
  • ------------- -----------------------
  • ADAMS 23-5月 -87
  • SCOTT 19-4月 -87
  • MILLER 23-1月 -82
  • JAMES 03-12月-81
  • FORD 03-12月-81
  • copy
      ENAMEHIREDATE
    1. ------------------------------------
    2. ADAMS23-5月-87
    3. SCOTT19-4月-87
    4. MILLER23-1月-82
    5. JAMES03-12月-81
    6. FORD03-12月-81

    注意: DESC表示降序排序,不能省略。
    3.多列排序
    可以按多列进行排序,先按第一列,然后按第二列、第三列......。
    【训练3】 查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。
    BYdeptno,hiredate;
    copy
      BYdeptno,hiredate;

    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
  • copy
      ENAMEDEPTNOHIREDATE
    1. ------------------------------------------------
    2. CLARK1009-6月-81
    3. KING1017-11月-81
    4. MILLER1023-1月-82
    5. SMITH2017-12月-80
    6. JONES2002-4月-81
    7. FORD2003-12月-81
    8. SCOTT2019-4月-87

    说明:该排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。
    4.在排序中使用别名
    如果要对计算列排序,可以为计算列指定别名,然后按别名排序。
    【训练4】 按工资和工作月份的乘积排序。
    SELECTempno,ename,sal*Months_between(sysdate,hiredate)AStotalFROMemp
  • BYtotal;
  • copy
      SELECTempno,153); font-weight:bold; background-color:inherit">AStotalFROMemp
    1. BYtotal;

    EMPNO ENAME TOTAL
  • ------------ ------------- ----------------------
  • 7876 ADAMS 221526.006
  • 7369 SMITH 222864.661
  • 7900 JAMES 253680.817
  • 7654 MARTIN 336532.484
  • copy
      EMPNOENAMETOTAL
    1. -----------------------------------------------
    2. 7876ADAMS221526.006
    3. 7369SMITH222864.661
    4. 7900JAMES253680.817
    5. 7654MARTIN336532.484

    sysdate获取当前日期。

    练习题: 1.sql语言中用来创建、删除修改数据库对象的部分被称为:
    A. 数据库控制语言(DCL)
    B. 数据库定义语言(DDL)
    C. 数据库操纵语言(DML)
    D. 数据库事务处理语言
    2.执行以下查询,表头的显示为:
    SELECTsal"Employee Salary"FROMemp
    copy
      SELECTsal"EmployeeSalary"FROMemp

    A. EMPLOYEE SALARY B. employee salary
    C. Employee Salary D. "Employee Salary“
    3.执行如下两个查询,结果为:
    SELECTenamename,sal salaryorderbysalary;
  • SELECTenamename,sal"SALARY"FROMemporderbysalASC;
  • copy
      SELECTenamename,salsalaryorderbysalary;
    1. "SALARY"bysalASC;

    A. 两个查询结果完全相同
    B. 两个查询结果不相同
    C. 第一个查询正确,第二个查询错误
    D. 第二个查询正确,第一个查询错误
    4.参考本章的emp表的内容执行下列查询语句,出现在第一行上的人是:
    WHEREdeptno=10BYsalcopy
      WHEREdeptno=10BYsalA. SMITH B. KING
      C. MILLER D. CLARK
      5.哪个函数与||运算有相同的功能
      A. LTRIM B. CONCAT
      C. SUBSTR D. INSTR
      6.执行以下语句后,正确的结论是:
      WHEREhiredate<to_date('04-11月-1980')-100
    copy
      WHEREhiredate<to_date('04-11月-1980')-100

    A. 显示给定日期后100天以内雇佣的雇员信息
    B. 显示给定日期前100天以内雇佣的雇员信息
    C. 显示给定日期100天以后雇佣的雇员信息
    D. 显示给定日期100天以前雇佣的雇员信息
    7.执行以下语句出错的行是:
    SELECTdeptno,max(sal)WHEREjobIN('CLERK','SALEMAN','ANALYST')
  • GROUPBYdeptno
  • HAVINGsal>1500;
  • copy
      SELECTdeptno,153); font-weight:bold; background-color:inherit">max(sal)WHEREjobIN('CLERK','SALEMAN','ANALYST')
    1. GROUPBYdeptno
    2. HAVINGsal>1500;

    A. 第一行 B. 第二行
    C. 第三行 D. 第四行
    8.执行以下语句出错的行是:
    max(avg(sal))
  • FROMemp
  • WHEREsal>1000
  • Groupbydeptno;
  • copy
      max(avg(sal))
    1. FROMemp
    2. WHEREsal>1000
    3. Groupbydeptno;

    9.执行以下语句出错的行是:
    FROMemp,dept
  • WHEREemp.deptno=dept.deptno
  • ANDsal>1000;
  • copy
      sql" style="padding:0px; border:none; color:rgb(92,sal
    1. FROMemp,dept
    2. WHEREemp.deptno=dept.deptno
    3. ANDsal>1000;

    10. 以下语句出错,哪种改动能够正确执行:
    SELECT deptno,85); background-color:inherit">max(sal)
  • WHEREmax(sal)>2500;
  • copy
      max(sal)
    1. WHEREmax(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. 以下语句的作用是:
    WHEREsal<(SELECTmin(sal)FROMemp)+1000;
    copy
      WHEREsal<(SELECTmin(sal)FROMemp)+1000;

    A. 显示工资低于1000元的雇员信息
    B. 将雇员工资小于1000元的工资增加1000后显示
    C. 显示超过最低工资1000元的雇员信息
    D. 显示不超过最低工资1000元的雇员信息
    12. 以下语句的作用是:
    SELECT jobWHEREdeptno=10
  • MINUS
  • SELECT jobWHEREdeptno=20;
  • copy
      SELECTjobWHEREdeptno=10
    1. MINUS
    2. WHEREdeptno=20;

    A. 显示部门10的雇员职务和20的雇员职务
    B. 显示部门10和部门20共同的雇员职务
    C. 显示部门10和部门20不同的雇员职务
    D. 显示在部门10中出现,在部门20中不出现的雇员职务 原文链接:https://www.f2er.com/oracle/213456.html

    猜你在找的Oracle相关文章