`

Oracle中count()函数

阅读更多
count(1)与count(*)比较:

如果你的数据表没有主键,那么count(1)比count(*)快
如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
如果你的表只有一个字段的话那count(*)就是最快的啦
count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。
如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。
因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的

count详解:

count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数.
distinct 列名,得到的结果将是除去值为null和重复数据后的结果

----------------------------------------------------------------------------------------------------------------
举例演示如下:


SQL> create table test
2 (
3 ename varchar2(10),
4 sal number(4)
5 );

表已创建。

SQL> insert into test values('fxe1',90);

已创建 1 行。

SQL> insert into test(ename) values('fxe2');

已创建 1 行。

SQL> insert into test(ename) values('fxe3');

已创建 1 行。

SQL> insert into test(ename) values('fxe4');

已创建 1 行。

SQL> insert into test values('fxe5',80);

已创建 1 行。

SQL> insert into test values('fxe6',80);

已创建 1 行。

SQL> select * from test;

ENAME SAL
---------- ----------
fxe1 90
fxe2
fxe3
fxe4
fxe5 80

fxe6 80

SQL> select count(*) from test;

COUNT(*)
----------
6

SQL> select count(sal) from test;

COUNT(SAL)
----------
3


SQL> select count(distinct sal) from test;

COUNT(DISTINCTSAL)
------------------
2

SQL> select distinct sal from test;

SAL
----------
80
90


SQL> select count(distinct *) from test;
select count(distinct *) from test
*
ERROR 位于第 1 行:
ORA-00936: 缺少表达式


SQL> spool off
分享到:
评论
2 楼 anttu 2012-03-20  
anttu 写道
 

1 楼 anttu 2012-03-20  
 

相关推荐

    Oracle分析函数

    Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算一个组和数据窗口内表达式的...

    SQLServer和Oracle的常用函数

    SQLServer和Oracle的常用函数

    包含了所有的oracle函数文档

    Oracle 函数分类 :单行函数 分组函数 分析函数单行函数分为:日期函数 数字函数 字符函数 转换函数 其他函数分组函数分为:max(最大值) min(最小值) sum(求和) avg(平均) count(求个数) 分析函数分为:rank() 具有相同...

    常用oracle函数SQL中的单记录函数

    常用oracle函数SQL中的单记录函数 CONCAT连接两个字符串; LENGTH返回字符串的长度 SUBSTR(string,start,count)取子字符串,从start开始,取count个

    Oracle分析函数基本概念和语法总结及Regexp_***用法

    Oracle分析函数基本概念和语法总结及Regexp_***(regexp_substr,regexp_instr, regexp_like, regexp_replace, regexp_count)用法

    Oracle函数大全实例

    总结了开发中Oracle常用到的一些函数,希望对大家有所帮助。 1、单行函数:表的每行都会有一个结果(字符函数、数字函数、日期函数、转换函数) 单行函数可以嵌套。嵌套函数的执行顺序是由内到外。 2、多行函数:表...

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...

    oracle函数大全.doc

    ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,...

    oracle分析函数

    ·3Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT ·4Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST… ·5Oracle分析函数五——统计分析函数 ·6Oracle分析函数六——数据分布函数及报表函数 ·7Oracle分析...

    oracle分析函数在BI分析中应用事例

    聚合函数可以是:sum,count,avg,max,min,first_value,last_value,rank,dense_rank ,row_number, ratio_to_report Over不能单独使用,用来制定数据窗口大小 Partition by表示分类数据集合,在此集合上的运算 Order by...

    oracle函数介绍(4) 非著名函数之聚合函数.doc

    聚合函数可被用于select,order by以及having子句中。其运算可以基于group by的结果,也可以直接对所有记录进行运算。当然,这种类型语句相信大家平常也用的比较多,概念性的就不多介绍了,有一点需要注意的是,除了...

    oracle函数介绍(3) 著名函数之聚合函数.doc

    聚合函数可被用于select,order by以及having子句中。其运算可以基于group by的结果,也可以直接对所有记录进行运算。当然,这种类型语句相信大家平常也用的比较多,概念性的就不多介绍了,有一点需要注意的是,除了...

    oracle_11gR2_07 数据操作(select,insert,update,delete) 和 常用函数

    oracle_11gR2_07 数据操作(select,insert,update,delete) 和 常用函数(count,max,min,avg,sum,decode,distinct)

    《Oracle Database编程指南》15-01:count()函数

    count函数计算组中的行数。 2、语法 count函数语法如下所示: count( {* | [distinct | all]} expr ) 该语法可以分解为下面的形式: COUNT( * ) 计算组中所有的行(包括具有空值和重复的行); COUNT( expr ) 如果expr...

    oracle的sql优化

     Oracle中通过RowID访问数据是最快的方式  对字段进行函数转换,或者前模糊查询都会导致无法应用索引而进行全表扫描  对Oracle共享池和缓冲区中的Sql必须要大小写都完全用上才能够匹配上 2.顺序问题  Oracle按照...

    Oracle中的SUM用法讲解

    Oracle中的SUM条件查询 1、按照区域编码分组查询区域编码、IPTV_NBR不为空的数量、ACC_NBR不为空的数量、所有用户数量 SELECT AREA_CODE, SUM ( CASE WHEN IPTV_NBR IS NULL or IPTV_NBR = '' THEN 0 ELSE 1 END ),...

    oracle case when 语句的用法详解

    1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex ... CASE WHEN 在语句中不同位置的用法2.1 SELECT CASE WHEN 用法 代码如下:SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位

    oracle 函数大全.txt

    5.INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; 6.LENGTH 返回字符串的长度; 7.LOWER 返回字符串,并将所有的字符小写 ;8.UPPER 返回字符串,并将所有的字符大写 ;9.RPAD和LPAD(粘贴...

    Oracle_Database_11g完全参考手册.part3/3

    9.4.6 组函数中的DISTINCT 9.5 列表函数 9.6 使用MAX或MIN函数查找行 9.7 优先级和圆括号的应用 9.8 小结 第10章 日期:过去、现在及日期的差 10.1 日期算法 10.1.1 SYSDATE、CURRENTDA_DATE及SYSllMESTAMP 10.1.2 ...

    Oracle_Database_11g完全参考手册.part2/3

    9.4.6 组函数中的DISTINCT 9.5 列表函数 9.6 使用MAX或MIN函数查找行 9.7 优先级和圆括号的应用 9.8 小结 第10章 日期:过去、现在及日期的差 10.1 日期算法 10.1.1 SYSDATE、CURRENTDA_DATE及SYSllMESTAMP 10.1.2 ...

Global site tag (gtag.js) - Google Analytics