oracle distinct 的使用方法

   distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

  SQL> -- create demo table

  SQL> create table Employee(

  2 ID VARCHAR2(4 BYTE) NOT NULL,

  3 First_Name VARCHAR2(10 BYTE),

  4 Last_Name VARCHAR2(10 BYTE),

  5 Start_Date DATE,

  6 End_Date DATE,

  7 Salary Number(8,2),

  8 City VARCHAR2(10 BYTE),

  9 Description VARCHAR2(15 BYTE)

  10 )

  11 /

  Table created.

  SQL>

  SQL> -- prepare data

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values ('01','Jason', 'Martin', to_date('19960725','YYYYMMDD'), to_date('20060725','YYYYMMDD'), 1234.56, 'Toronto', 'Programmer')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('02','Alison', 'Mathews', to_date('19760321','YYYYMMDD'), to_date('19860221','YYYYMMDD'), 2334.78, 'Vancouver','Tester')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('03','James', 'Smith', to_date('19781212','YYYYMMDD'), to_date('19900315','YYYYMMDD'), 2334.78, 'Vancouver','Tester')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('04','Celia', 'Rice', to_date('19821024','YYYYMMDD'), to_date('19990421','YYYYMMDD'), 2334.78, 'Vancouver','Manager')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('05','Robert', 'Black', to_date('19840115','YYYYMMDD'), to_date('19980808','YYYYMMDD'), 2334.78, 'Vancouver','Tester')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('06','Linda', 'Green', to_date('19870730','YYYYMMDD'), to_date('19960104','YYYYMMDD'), 2334.78,'New York', 'Tester')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('07','David', 'Larry', to_date('19901231','YYYYMMDD'), to_date('19980212','YYYYMMDD'), 2334.78,'New York', 'Manager')

  3 /

  1 row created.

  SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date, End_Date, Salary, City, Description)

  2 values('08','James', 'Cat', to_date('19960917','YYYYMMDD'), to_date('20020415','YYYYMMDD'), 2334.78,'Vancouver', 'Tester')

  3 /

  1 row created.

  SQL>

  SQL>

  SQL>

  SQL> -- display data in the table

  SQL> select * from Employee

  2 /

  ID FIRST_NAME LAST_NAME START_DAT END_DATE SALARY CITY DESCRIPTION

  ---- ---------- ---------- --------- --------- ---------- ---------- ---------------

  01 Jason Martin 25-JUL-96 25-JUL-06 1234.56 Toronto Programmer

  02 Alison Mathews 21-MAR-76 21-FEB-86 2334.78 Vancouver Tester

  03 James Smith 12-DEC-78 15-MAR-90 2334.78 Vancouver Tester

  04 Celia Rice 24-OCT-82 21-APR-99 2334.78 Vancouver Manager

  05 Robert Black 15-JAN-84 08-AUG-98 2334.78 Vancouver Tester

  06 Linda Green 30-JUL-87 04-JAN-96 2334.78 New York Tester

  07 David Larry 31-DEC-90 12-FEB-98 2334.78 New York Manager

  08 James Cat 17-SEP-96 15-APR-02 2334.78 Vancouver Tester

  8 rows selected.

  SQL>

  SQL>

  SQL>

  SQL>

  SQL>

  SQL> -- Remember that the DISTINCT operator applies to the entire select list.

  SQL>

  SQL> SELECT DISTINCT City, Description FROM Employee;

  CITY DESCRIPTION

  ---------- ---------------

  New York Manager

  Vancouver Tester

  Toronto Programmer

  Vancouver Manager

  New York Tester

  同时与groupy count 使用的用法

  SQL> select Coder

  2 , count(distinct course)

  3 , count(*)

  4 from offerings

  5 group by Coder;

  CODER COUNT(DISTINCTCOURSE) COUNT(*)

  ---------- --------------------- ----------

  1 2 3

  4 2 2

  8 2 2

  11 1 1

  13 2 2

  3 3

  6 rows selected.

时间: 2024-09-14 22:50:11

oracle distinct 的使用方法的相关文章

oracle查看实例名方法

  从事编程的朋友们可能都会遇到连接连接Oracle时会出现oracle url无效的问题,下面小编就教大家oracle查看实例名方法 来帮助各位解决这个问题. oracle查看实例名 在两个配置文件里面分别是listener.ora和tnsnames.ora.路径是:D:Oracle9i_9.2networkadmin,里面写明了远程连接的实例名和端口号,也就是SERVICE_NAME.同时oracle查看实例名 还有另外一种方法就是用SQL语句查询.用管理员身份system登陆后输入"sho

oracle清理数据的方法

oracle清理数据的方法 一.删除一个用户下所有数据库对象 一种方法是删除这个用户然后重建,需要管理员操作: drop user wangyi cascade; --删除用户select * from dba_users where username = 'wangyi' --查询默认表空间drop tablespace WANGYI_DTBS including contents and datafiles; --删除表空间 重建用户: create user wangyi identifi

asp 连接 oracle数据库两种方法

'oracle 连接方法: set adocon=server.createobject("adodb.connection") adocon.open"driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;" 'oracle ole db 连接方法: set adocon=server.createobject("adodb.connection&qu

Oracle数据库的备份方法

1.引言 Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统.比如使用export实用程序导出数据库对象.使用Oracle备份数据库.使用Oracle对称复制.使用Oracle并行服务器.使用Oracle冷备份.使用Oracle热备份等各种备份方法都有其优缺点.适用的场合和相应的软硬件要求.本文主要就用export实用程序导出数据库对象.Oracle冷备份.Oracle热备份这三种最基本的备份方法进行详细的探讨,分析各自的优缺

叠加报错-oracle distinct、group by、union all叠加使用报错

问题描述 oracle distinct.group by.union all叠加使用报错 分组聚合条件下,计算xjh不重复的记录条数以及所有记录条数: with a as( select '2012' xn,'a'xxdm,'x1' xjh from dual union all select '2012' xn,'a'xxdm,'x1' xjh from dual union all select '2012' xn,'a'xxdm,'x2' xjh from dual union all

SQL语句中的case when语法以及Oracle中的类似方法

一.基本概念和例子 case when是sql语句的语法,而不是属于特定数据库的语言 方法一: select num,name, (case classnowhen '1' then '一班'when '2' then '二班'else '其他班级' end) as classname from student 方法二: select num,name, (case when classno = '1' then '一班'when classno = '2' then '二班'else '其他班

Oracle构造序列的方法分析对比

编辑手记:关于Oracle的序列,相信大家并不陌生,但很多人平时只用到connect by 的方式来构造序列,今天一起来学习更多的构造序列的方法及每个方法的优缺点. 作者介绍 怀晓明,云和恩墨性能优化专家.ITPUB社区版主,兴趣广泛,视野广阔,目前专注于SQL审核与优化工作,是一个细心敏锐的troubleshooter.擅长数据库和web的设计和开发,精于故障诊断和处理. 正文 Oracle构造序列的方法随着版本一直在变化.在9i之前的版本,常用的方法是: select rownum rn f

Oracle数据库系统紧急故障处理方法_oracle

正在看的ORACLE教程是:Oracle数据库系统紧急故障处理方法.Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障.这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起.所以我们首先要判断问题的起因,如果是硬件故障则首先要解决硬件问题.在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理.  控制文件损坏:  控制文件记录了关于oracle的重要配置信息,如数据库名.字符集名字.各个数据文件.日志文件的位置等等信息.控制文件的损坏,会导致数据库异常关闭

在防火墙上开放Oracle服务端口的方法

Oracle服务端口方面会有很多的问题,下面就将为您介绍在防火墙上开放Oracle服务端口的方法,希望对您学习Oracle服务端口方面能有所帮助. 要使Oracle客户端能正常连接到设置有防火墙的安装在windows上的Oracle服务器,单开放一个1521或自定义的监听端口是不够的. 我们有的时候需要映射端口远程去访问Oracle数据库,这里有个防火墙的问题,在unix上没有问题,但是在win 平台上却无法正确访问,下面的可以解决这个问题,: 近来由于工作需要,在Windows XP平台上安装