oracle中的函数

来源:互联网 发布:淘宝买家好评 编辑:程序博客网 时间:2024/06/06 19:36

1、聚合函数

聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,对一组值进行计算并返回单一的值。常见的聚合函数有avg()、sum()、count()、max()、min()、count_big()等等

2、分析函数

分析函数是在主查询结果的基础上进行一定的分析,采用partition by分组。分析函数有如下几种形式: over(order by ...)按照指定字段排序进行累计,order by是个默认的开窗函数 over(partition by  ...)按照指定字段进行分组 over(partition by ...order by ...) 分析函数的开窗范围: over(order by ... range between 5 preceding and 5      following):窗口范围为当前行数据幅度减5加5后的范围内 over(order by ...  rows between 5 preceding and 5       following):窗口范围为当前行行数前后各移动5行。 与over函数结合的几个函数介绍: row_number()over():如果同班有两个并列第一,只返回一个结果 rank()over():跳跃排序 dense_rank()over():连续排序

更多关于分析函数的应用可以参考博客:http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html

3、递归查询( start with… connect by prior )

oracle中的树查询,具体涵义如下:start with...指定递归在根节点connect by prior 指定阶层父子关系    connect by prior parent=child:根据parent找child    connect by parent=prior child 根据 child找parent

更多关于递归的应用可以参考博客:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html

4、join和union的区别:

join将两张表合并为一张,字段累加。union将两张表数据合并为一张表数据,字段无变化。

5、nvl和decode区别:

nvl(column,default)只能在column为null时赋值defaultdecode(nvl(columen,value1),value1,default1,value2,default2,....,default)功能强大,根据字段不同的值赋值,最后又缺省值,可以结合nvl使用

6、union 和 union all的区别:

union all:合并查询结果直接返回union:将合并结果删选去重,并且根据字段顺序排序后返回注意:使用union后是根据字段顺序合并排列的,和字段名称无关,必须按照相同的字段类型顺序,才不会报错。

7、应用技巧:

应用一:多次组合使用sum和decode,可以统计分类type的数据量,不再需要分别写n条语句sum(decode(type,'01',1,0)),sum(decode(type,'02',1,0)),sum(decode(type,'03',1,0))应用二:不同表格中统计同一引用的数量
select enu_no,sum(a1),sum(a2),sum(b1)from(    select  enu_no, 1 a1,count(*) a2,0 b1  from a    union all    select  enu_no, 0 a1,0 a2,1 b1 from b    )group by enu_no

8、oracle索引:

唯一索引该字段的值在表数据任意两列都不相同当建立主键或者唯一约束时唯一索引会被自动建立create union index indexname on table(column)组合索引当两个或者多个列经常一起出现在where条件中时,在这些列上同时创建将使用最频繁的列放在组合索引最前面位图索引列中有非常多的重复值,例如某列保存了‘性别’信息create bitmap index  indexname on talbe(column[,column,column...])函数索引当where条件语句中包含函数或者表达式时使用函数索引create index indexname on talbe(function());分区索引
原创粉丝点击