动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.Oracle 常用功能函数汇总.
.Oracle 50个具有决定意义的重大事.
.Oracle数据仓库的分层管理器解决.
.[Oracle 10g]-关于表空间的更名.
.用show parameter直接显示Oracle.
.oracle 9i 数据库服务的分类.
.一个SQL的优化过程.
.Oracle中password file的作用及说.
.Oracle8i表空间和数据的恢复.
.Oracle LogMiner终结版(zt).
.oracle里面如何写case语句.
.关于冷备份与热备份的对比.
.Oracle中使用自治事务保存日志表.
.Oracle Berkeley数据库Java版.
.关於 Kernel 版本与 Distributio.
.数据库查询结果的动态排序.
.dual表是什么表?.
.关于Oracle数据库中的锁机制深入.
.关于约束、CASE语句和游标的一些.
.通过异构服务设置访问多个SQL数据.

Oracle笔记-分析函数

发表日期:2008-2-9 |


  第 12 章 分析函数   12.1 分析函数如何工作   语法   FUNCTION_NAME(<参数>,…)   OVER   (<PARTITION BY 表达式,…> <ORDER BY 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> <WINDOWING子句>)   PARTITION子句   ORDER BY子句   WINDOWING子句   缺省时相当于RANGE UNBOUNDED PRECEDING   1. 值域窗(RANGE WINDOW)   RANGE N PRECEDING   仅对数值或日期类型有效,选定窗为排序后当前行之前,某列(即排序列)值大于/小于(当前行该列值 –/+ N)的所有行,因此与ORDER BY子句有关系。   2. 行窗(ROW WINDOW)   ROWS N PRECEDING   选定窗为当前行及之前N行。   还可以加上BETWEEN AND 形式,例如RANGE BETWEEN m PRECEDING AND n FOLLOWING   函数   AVG(<distinct all> eXPr)   一组或选定窗中表达式的平均值   CORR(expr, expr)   即COVAR_POP(exp1,exp2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2)),两个表达式的互相关,-1(反相关) ~ 1(正相关),0表示不相关   COUNT(<distinct> <*> <expr>)   计数   COVAR_POP(expr, expr)   总体协方差   COVAR_SAMP(expr, expr)   样本协方差   CUME_DIST   累积分布,即行在组中的相对位置,返回0 ~ 1   DENSE_RANK   行的相对排序(与ORDER BY搭配),相同的值具有一样的序数(NULL计为相同),并不留空序数   FIRST_VALUE   一个组的第一个值   LAG(expr, <offset>, <default>)   访问之前的行,OFFSET是缺省为1 的正数,表示相对行数,DEFAULT是当超出选定窗范围时的返回值(如第一行不存在之前行)   LAST_VALUE   一个组的最后一个值   LEAD(expr, <offset>, <default>)   访问之后的行,OFFSET是缺省为1 的正数,表示相对行数,DEFAULT是当超出选定窗范围时的返回值(如最后行不存在之前行)   MAXexpr)   最大值   MIN(expr)   最小值   NTILE(expr)   按表达式的值和行在组中的位置编号,如表达式为4,则组分4份,分别为1 ~ 4的值,而不能等分则多出的部分在值最小的那组   PERCENT_RANK   类似CUME_DIST,1/(行的序数 - 1)   RANK   相对序数,答应并列,并空出随后序号   RATIO_TO_REPORT(expr)   表达式值 / SUM(表达式值)   REGR_ xxxx(expr, expr)   线性回归函数   ROW_NUMBER   排序的组中行的偏移   STDDEV(expr)   标准差   STDDEV_POP(expr)   总体标准差   STDDEV_SAMP(expr)   样本标准差   SUM(expr)   合计   VAR_POP(expr)   总体方差   VAR_SAMP(expr)   样本方差   VARIANCE(expr)   方差   12.2 例子   竖表转横表   一般形式为将一个列为C!, C2, … CN的表,以C1, C2, … CX为基准,将CX+1, … CN的不同值改为列。一般化的语法:   SELECT C1, C2, … CX,   MAX(DECODE(rn, 1, CX+1, NULL)) CX+1_1, … MAX(DECODE(rn, 1, CN, NULL)) CN_1   MAX(DECODE(rn, 2, CX+1, NULL)) CX+1_2, … MAX(DECODE(rn, 2, CN, NULL)) CN_2   …   MAX(DECODE(rn,N,CX+1, NULL)) CX+1_N, … MAX(DECODE(rn,N, CN, NULL)) CN_N FROM (SELECT C1, C2, … CN, ROW_NUMBER() OVER (PARTITION BY C1, C2, … CX ORDER BY <something>) rn    FROM T    WHERE …)
GROUP BY C1, C2, … CX; 通用包: CREATE OR REPLACE PACKAGE pkg_pivot AS   TYPE refcursor IS REF CURSOR;   TYPE ARRAY IS TABLE OF VARCHAR2(30);   PROCEDURE pivot(p_max_cols IN NUMBER DEFAULT NULL,                   p_max_cols_query IN VARCHAR2 DEFAULT NULL,                   p_query IN VARCHAR2,                   p_anchor IN ARRAY,                   p_pivot IN ARRAY,                   p_cursor IN OUT refcursor); END; CREATE OR REPLACE PACKAGE BODY pkg_pivot AS   PROCEDURE pivot(p_max_cols IN NUMBER DEFAULT NULL,                   p_max_cols_query IN VARCHAR2 DEFAULT NULL,                   p_query IN VARCHAR2,                   p_anchor IN ARRAY,                   p_pivot IN ARRAY,                   p_cursor IN OUT refcursor)   AS     l_max_cols NUMBER;     l_query LONG;     l_cnames ARRAY;   BEGIN     IF (p_max_cols IS NOT NULL)     THEN       EXECUTE IMMEDIATE p_max_cols_query INTO l_max_cols;     ELSE       RAISE_APPLICATION_ERROR(-20001, 'Cannot figure out max cols');     END IF;     l_query := 'select ';     FOR i IN 1 .. p_anchor.count     LOOP       l_query := l_query p_anchor(i) ',';     END LOOP;     FOR i IN 1 .. l_max_cols     LOOP       FOR j IN 1 .. p_pivot.count       LOOP         l_query := l_query 'max(decode(rn,'i','p_pivot(j)',null)) 'p_pivot(j) '_' i ',';       END LOOP;     END LOOP;     l_query := RTRIM(l_query,',') ' from (' p_query ') group by ';
    FOR i IN 1 .. p_anchor.count     LOOP       l_query := l_query p_anchor(i) ',';     END LOOP;     l_query := RTRIM(l_query,',');     EXECUTE IMMEDIATE 'alter session set cursor_sharing=force';     OPEN p_cursor FOR l_query;     EXECUTE IMMEDIATE 'alter session set cursor_sharing=exact';   END; END;   其中:   p_max_cols_query为SELECT MAX(COUNT(*)) FROM TABLE_NAME GROUP BY C1, C2, … CX;   p_query为SELECT C1, C2, … CN ROW_NUMBER() OVER (PARTITION BY C1, C2, … CX ORDER BY <something>) rn FROM TABLE_NAME;   p_anchor为pkg_pivot.array(C1, C2, … CX)   p_pivot为pkg_pivot.array(CX+1, CX+2, … CN)   p_cursor为返回的游标。   12.3 最后说明   PL/SQL与分析函数   PL/SQL不支持分析函数的语法,可以通过以下两种方法解决:   1。使用动态游标;   2。将含分析函数的语句创建为视图。   WHERE子句中的分析函数   由于查询仅在最后的ORDER BY子句前执行分析函数,因此WHERE条件中无法使用分析函数,只能利用嵌套循环实现。
上一篇:Oracle中捕获问题SQL语句 人气:349
下一篇:oracle笔记-动态SQL 人气:397
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵