数据库学习:oracle的递归写法,分析函数写法,以及teradata的取一定数量记录的写法
2009-03-21 16:15
579 查看
oracle数据库
例子:
递归查询:
select rpad('*',2*level,'*') || ename ename,level
from emp
start with
mgr is null
connect by prior empno = mgr
;
level 是层数,是可以直接用的 一个参数,而start with 是指树的开始,就是根节点。
connect by prior 后面跟的是连接条件。
评价后觉得比SQL server的 写法 简单,更容易了解,SQL server 的到现在我都不理解,虽然我知道怎么使用。
分析函数:
select
deptno,
ename,
sal,
sum(sal) over(partition by deptno order by sal,ename)
cum_sal,
round(100*ratio_to_report(sal) over (partition by
deptno),1) pct_dept,
round(100*ratio_to_report(sal) over(),1)
pct_overall
from emp
order by
deptno,sal
;
这里用到了分析函数,第一个使用partition by 对 deptno 分区后进行计算。
第二个用到了一个百分比 的 用法round(100*ratio_to_report(sal) over (partition by
deptno),1)
这个组合是相辅相成的,ratio_to_report 显然是个计算百分比的函数,但是需要和over 一起使用。
最后两个字段的差别就是按照什么来计算这个百分比,第一个是在deptno这个区间内,而第二个则是全部。
--------
teradata 数据库
top 与 sample 的区别
select top 10 * from table;
select * from table sample 10;
区别,top 是取rownum 前十行的值,而sample则是随机函数随机取出来的值,所以范小亮说,top 快。
也就是说这两种写法出来的值是不同的。
呵呵。
例子:
递归查询:
select rpad('*',2*level,'*') || ename ename,level
from emp
start with
mgr is null
connect by prior empno = mgr
;
level 是层数,是可以直接用的 一个参数,而start with 是指树的开始,就是根节点。
connect by prior 后面跟的是连接条件。
评价后觉得比SQL server的 写法 简单,更容易了解,SQL server 的到现在我都不理解,虽然我知道怎么使用。
分析函数:
select
deptno,
ename,
sal,
sum(sal) over(partition by deptno order by sal,ename)
cum_sal,
round(100*ratio_to_report(sal) over (partition by
deptno),1) pct_dept,
round(100*ratio_to_report(sal) over(),1)
pct_overall
from emp
order by
deptno,sal
;
这里用到了分析函数,第一个使用partition by 对 deptno 分区后进行计算。
第二个用到了一个百分比 的 用法round(100*ratio_to_report(sal) over (partition by
deptno),1)
这个组合是相辅相成的,ratio_to_report 显然是个计算百分比的函数,但是需要和over 一起使用。
最后两个字段的差别就是按照什么来计算这个百分比,第一个是在deptno这个区间内,而第二个则是全部。
--------
teradata 数据库
top 与 sample 的区别
select top 10 * from table;
select * from table sample 10;
区别,top 是取rownum 前十行的值,而sample则是随机函数随机取出来的值,所以范小亮说,top 快。
也就是说这两种写法出来的值是不同的。
呵呵。
相关文章推荐
- oracle分析函数之rank学习记录
- Oracle学习记录1(单行函数,多行函数)
- 使用Oracle分析函数随机抽取N条记录
- oracle 数据库单子段多条记录合并一条记录函数
- Qt学习记录--05 函数指针以及类函数指针用于Qt信号槽
- oracle数据库学习记录(持续更新中...)
- 学习Oracle分析函数(Analytic Functions)
- 教为学:Oracle SQL学习之路(二):分析函数之相邻
- ORACLE常用函数学习记录
- Oracle学习记录1(单行函数,多行函数)
- Oracle学习记录1(单行函数,多行函数)
- Oracle 数据库基础学习 (二) 学习小例子:创建一个表,记录商品买卖的情况
- Oracle数据库学习12之函数
- oracle的分析函数学习
- 数据库SQL中对查询结果排序排列序号编号,Oracle分析函数 rank,dense_rank,row_number使用和区别
- 关于Oracle中split函数的实现以及函数递归的举例。
- 数据库--oracle--分析函数OVER ()
- Oracle学习记录1(单行函数,多行函数)
- Oracle学习记录1(单行函数,多行函数)
- Oracle之函数学习以及事务