《Oracle SQL疑难解析》——1.3 将结果排序

1.3 将结果排序

Oracle SQL疑难解析

1.3.1 要解决的问题

用户想把查询出来的记录按某种顺序排列。例如,他们想把员工先按姓、再按名的字母顺序排列。

1.3.2 解决方法

Oracle允许使用标准的ORDER BY子句来排列查询结果:

select employee_id, first_name, last_name, hire_date, salary
from hr.employees
where salary > 5000
order by last_name, first_name;
得到的结果如下:

EMPLOYEE_ID  FIRST_NAME  LAST_NAME  HIRE_DATE  SALARY
-----------  ----------  ---------  ---------  ------
174      Ellen    Abel      11/MAY/96  11000
166      Sundar    Ande      24/MAR/00    6400
204      Hermann    Baer      07/JUN/94    10000
167      Amit      Banda    21/APR/00    6200
172      Elizabeth  Bates    24/MAR/99  7300
151      David    Bernstein  24/MAR/97  9500
169      Harrison    Bloom    23/MAR/98  10000
148      Gerald    Cambrault  15/OCT/99  11000
154      Nanette    Cambrault  09/DEC/98    7500
110      John      Chen      28/SEP/97  8200
…

1.3.3 数据库如何工作

在ORDER BY 子句的作用下,Oracle先按LAST_NAME字段进行排序,在LAST_NAME的值相同的情况下,再按FIRST_NAME字段来排序。如果用户不在语句中指明升序或降序,则Oracle 隐式使用升序来排列结果,数字是从0到9,字母从A到Z,依此类推。可以用ASC 或DESC选项显式控制升序或降序。例如:

select employee_id, first_name, last_name, hire_date, salary
from hr.employees
where salary > 5000
order by salary desc;

语句中显式地指明了按薪水字段降序排列,得到的结果是:

EMPLOYEE_ID FIRST_NAME LAST_NAME HIRE_DATE SALARY
----------- ---------- --------- --------- ------
    100 Steven    King     17-JUN-87 24000
    102 Lex    De Haan   13-JAN-93 17000
    101 Neena    Kochhar   21-SEP-89 17000
    145 John    Russell   01-OCT-96 14000
    146 Karen    Partners   05-JAN-97 13500
…
时间: 2024-09-16 14:25:00

《Oracle SQL疑难解析》——1.3 将结果排序的相关文章

《Oracle SQL疑难解析》导读

前言 Oracle SQL疑难解析 欢迎阅读本书.现在你手中的这本书,对在Oracle数据库中编写SQL时经常碰到的问题提供了现成的解决方法.这本书写给那些迫切需要解决某个特定问题的人.本书每一节讨论一个特定的问题,并为这一问题提供了一个有效的解决方法.对于解决方法感兴趣的人,每一节还扩展讨论了解决方法,有些还提供了替代解决方法. 我们精心编写了这本书,是为了让你掌握如何为Oracle编写SQL,至少可以让你了解Oracle的SQL.虽然我们把内容分割成有逻辑的章节,例如,数据类型或生成报表,但

《Oracle SQL疑难解析》——.13 在语句中找到和消除空值

1.13 在语句中找到和消除空值 Oracle SQL疑难解析 1.13.1 要解决的问题 我们需要统计出公司中,有多少员工的薪酬里含销售提成(commission percentage),有多少员工的薪酬是固定工资.我们可以用HR.EMPLOYEES表中的COMMISSION_PCT字段来获得数据. 1.13.2 解决方法 HR.EMPLOYEES表的结构允许COMMISSION_PCT字段为空值.有两个查询语句可以分别查找commission percent为空值的人和为非空值的人.首先,查

《Oracle SQL疑难解析》——1.12 查询的WHERE子句基于另一个查询的结果

1.12 查询的WHERE子句基于另一个查询的结果 Oracle SQL疑难解析 1.12.1 要解决的问题 我们要从某张表中查询数据,但查询条件依赖当时另一张表中的数据情况,所以不能直接把条件固定到语句中.具体地说,我们现在要做一个报告,把所有办公场所在北美的部门列出来. 1.12.2 解决方法 在HR SCHEMA中,DEPARTMENT表中有部门的信息,LOCATIONS表中有办公场所的信息: select department_name from hr.departments where

《Oracle SQL疑难解析》——1.15 启用其他排序和比较选项

1.15 启用其他排序和比较选项 Oracle SQL疑难解析 1.15.1 要解决的问题 文本数据由大.小写字母和句子(英文句子,指第一个字母大写,后续字母小写)组成,我们希望对之进行不区分大小写的比较.排序等操作. 1.15.2 解决方法激活Oracle的语言比较逻辑,就能按人类的习惯来查询数据,摆脱大小写负担: alter session set NLS_COMP='LINGUISTIC'; select first_name, last_name from hr.employees wh

《Oracle SQL疑难解析》——1.14 排序

1.14 排序 Oracle SQL疑难解析 1.14.1 要解决的问题 我们的文本数据混合了大写.小写字母和句子(英文句子,指第一个字母大写,后续字母小写).我们希望把这些数据按字母顺序.大小写顺序进行排列. 1.14.2 解决方法 我们先在HR.EMPLOYEES表中创建一些混合大小写的数据.运行下面的UPDATE语句,把William Smith's的姓(last_name)改为大写: update hr.employees set last_name = 'SMITH' where em

《Oracle SQL疑难解析》——第1章 基础

第1章 基础 Oracle SQL疑难解析本章针对SQL语句的核心构建模块,罗列了很多的基本操作诀窍,以便让初学者快速上手,或者让有经验的读者重温技术关键点.本章主要内容包括对Oracle数据库表中数据的查询.更改.删除,以及进行此类操作时需要输入的一些常用的选项. 对那些已有很好SQL基础的人员,我们建议选择性地翻阅本章,仅看你感兴趣的章节,而不是全盘通读.为节约读者的时间,我们在本章的一开头,就列出了一两个精华的操作指导,这样你只需花很少的时间,就能掌握关键内容.你也可以把本章学到的内容和后

《Oracle SQL疑难解析》——1.1 从表中查询数据

1.1 从表中查询数据 Oracle SQL疑难解析 1.1.1 要解决的问题 如何从一个表中查询特定行和列的数据. 1.1.2 解决方法 用包含WHERE子句的SELECT语句.下面的SELECT 语句可以从数据库表中查询符合条件的行的列值: select employee_id, first_name, last_name, hire_date, salary from hr.employees where department_id = 50 and salary < 7500; 上述SE

《Oracle SQL疑难解析》——1.2 把表中所有字段都列出来

1.2 把表中所有字段都列出来 Oracle SQL疑难解析 1.2.1 要解决的问题 我们要把表中所有的字段数据都列出来,但并不想把每个字段名都在SELECT后面输入一遍. 1.2.2 解决方法 使用星号(*)占位符,即可代表所有表中字段,例如: select * from hr.employees where department_id = 50 and salary < 7500; ``` 因为列多页窄,查询结果换行显示,为节省空间,我们也仅仅在下面列了几行,但相信你已经能看出来用"

《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表

1.6 批量地从一个表中复制数据到另一个表 Oracle SQL疑难解析 1.6.1 要解决的问题 如何从一个表中一次性复制多行记录到另一个表. 1.6.2 解决方法 INSERT INTO... SELECT... 方法可以插入多行记录,关键是用SELECT语句选择多行记录时一定要用对选择条件.我们把以前的SELECT语句做一点修改,就可以选择多行记录了: 当然,前提是存在HR.CANDIDATES表,在做练习前,应确保你的HR.CANDIDATES表和例子中的表是一致的. 1.6.3 数据库