- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第14 oracle中的函数与表达式
14.8.4 主要的分析函数 分析函数作用对象为窗口函数所捕获的记录集,因此,分析函数具有聚合函数的特点,大多数的聚合函数,如sum()、count()、max()等都能作为分析函数出现。Oracle还提供了专门针对窗口函数的分析函数,本小节着重讲述常用的几种——fist_value()、last_value()、lag()和lead()。 1.fist_value()函数的使用 select distinct department, first_value(employee_name) over(partition by department order by salary) employee_name, first_value(salary) over(partition by department order by salary) salary from salary 2.last_value()函数的使用 3.lead()函数的使用 select employee_id, employee_name, salary, lead(employee_name, 1, N/A) over (partition by department order by salary) prev_name from salary order by employee_id 4.lag()函数的使用 14.9 本章实例 Oracle虽然内置了很多函数,但是并不能满足日常开发中的应用。此时,需要开发者自定义函数,而内置函数往往成为自定函数的基石。 create or replace function is_date (param varchar2) return varchar2 is val date; begin val := to_date (nvl (param, ), yyyy-mm-dd hh24:mi:ss); return Y; exception when others then return N; end; select is_date(abc) from dual; select is_date(2009-09-01) from dual; 14.10 本章小结 本章通过详尽的实例讲述了Oracle中常用的内置函数、表达式以及特殊判式。对于内置函数,特别需要注意的是聚合函数的使用。聚合函数最常用的场景为分组查询;聚合函数不能与单条记录的列并列作为查询结果。对于特殊判式,尤其应该注意的是like判式的使用,like判式使用中,通配符只有“%”和“_”两种,要注意通配符和正则表达式的区别。 14.10 本章小结 在Oracle高级函数中,重点介绍了分析函数和窗口函数,这两个函数总是结合使用,为数据表中单条记录提供新的结果集的方法。对于窗口函数,要重点理解分区和排序的工作流程,尤其需要注意的是,对于排序中,具有相同列值的记录的处理。相较之下,分析函数非常类似于聚合函数,比较容易理解和掌握。在统计和生成复杂报表时,分析函数和窗口函数有着广泛的应用,尤其对于复杂统计,利用这两种函数往往可以起到事半功倍的效果。 14.11 习题 1.简述null作为函数参数时的特点。 2.简述like判式的使用方法。 3.简述is null判式的意义。 4.简述窗口函数的特点。 14.3.3 last_day()函数——返回特定日期所在月的最后一天 last_day()函数将接受一个日期参数。该函数首先获得日期参数所在月的信息,然后获得该月最后一天的日期。 select to_char(last_day(sysdate), yyyy-mm-dd) result from dual; 可以综合利用add_months()函数来获得若干月之后的月份的最后一天。 select to_char(last_day(add_months(sysdate, 3)), yyyy-mm-dd) result from dual; 14.3.4 months_between ()函数——返回两个日期所差的月数 months_between()函数用于获取两个日期所间隔的月数。该函数的返回值是一个实数。 select months_between(sysdate, to_date(2009-02-08, yyyy-mm-dd)) result from dual; 当第一个日期早于第二个日期,那么返回值将是负值。 select months_between(to_date(2009-02-08, yyyy-mm-dd), to_date(2009-03-08, yyyy-mm-dd)) result from dual; 14.3.5
原创力文档


文档评论(0)