Oracle 集锦
1 decode 数据转换
例如:在表中 性别存储的是 0 或者 1 在 在展现层需要展现出男或者女,可作如下操作
select decode(sex,'0','男','1','女') as sex from users ;
查询后返回 男或者女,此函数只适用于 oracle
2 COALESCE 返回其参数中第一个非空表达式
参数:任何类型的表达式,所有表达式必须是相同类型,如果所有的参数都为null,则返回 null
例如:
select coalesce('','333') comm from dual ;
查询的结果是:333
3 STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差
例如:
SQL> select stddev(sal) from scott.emp;
STDDEV(SAL)
-----------
1182.5032
SQL> select stddev(distinct sal) from scott.emp;
STDDEV(DISTINCTSAL)
-------------------
1229.951
4 minus
minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候 ,
返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录
使用时:两个表里面的字段类型最好一致
例如: A 表
ID Name
1 qq
2 tt
3 uu
B 表
ID Name
1 qq
2 ta
3 uu
那么
(SELECT * FROM A)
MINUS
(SELECT * FROM B)
的结果是:
ID Name
1 qq
3 uu
5 分析函数over
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。
例如:
表 test
classNo name age
1 zhang1 1
1 zhang1 2
2 zhang1 3
2 zhang1 4
2 zhang1 5
3 zhang1 6
3 zhang1 6
4 zhang1 7
select classNo,name,sum(age)over(partition by classNo) allage from test
得到的结果是:
classNo name allage
1 zhang1 3
1 zhang1 3
2 zhang1 12
2 zhang1 12
2 zhang1 12
3 zhang1 12
3 zhang1 12
4 zhang1 7
group by是对检索结果的保留行进行单纯分组,一般总爱和聚合函数一块用例如AVG(),COUNT(),max(),main()等一块用。
partition by虽然也具有分组功能,但同时也具有其他的功能。它属于oracle的分析用函数。
sum() over (PARTITION BY ...) 是一个分析函数。他执行的效果跟普通的sum ...group by ...不一样,它计