oracle的case-when,row_number(),trunc()函数
来源:互联网 发布:sql insert into 多表 编辑:程序博客网 时间:2024/05/16 01:18
今天我们来讲一讲oracle的SQL语句中几个比较重要很深入的函数。
1. 第一个是case-when函数
他的作用是将数据库表格中的某一列上的值进行分组显示,显示我们想要强制性显示的内容。举例:
select (case id when 10 then '第一个' when 14 then '第二个' else '第三个' end ) 顺序 from ssh_employee
显示效果见附件。
2.第二个函数是row_number()
这个函数的作用是将查询结果按照某列分组之后再在组内进行排序。
举例:
select row_number() over(partition by column1 order by column2) sum from ssh_employee
表示按照column1分组,然后在组内再按照column2进行排序。
注意,row_number()是非确定性的(如返回值为12,13,14,15.但结果又可能是12,14,13,15),而rank()和dense_rank()是确定性函数。
显示结果见附件。
此外,oracle也可以用rownum这个伪列来获取前几名,也很有效,但是需要使用select语句将这个伪列显式出来才可以使用>=,否则只可以用<=。
rownum()这个伪列和order by结合时,也会产生一个很有意思的现象。
在使用rownum时,只有当order by的字段是主键时,才会产生我们想要的先按照主键排序再计算rownum的情况。
3.第三个是trunc()函数
truncate表示截取,截断的意思。它可以操作的对象是日期类型和数字类型。
① 当操作数字类型时,需要传入两个参数,第一个是要截取的数字类型的对象,第二个是相对于小数点来说要截取到的位置,默认为0。注意,trunc()函数截取时是不会进行四舍五入的。例子:trunc(123.567,0)得到的结果是,123。trunc(123.567,-1) 得到的结果是120。
② 当操作日期类型时,也需要传入两个参数.第一个表示要操作的日期类型的对象。第二个表示要截取的内容。具体可以返回当前年,月的第一天。或者返回当前时间,精确到天,时 ,分,但是不会精确到秒。
- oracle的case-when,row_number(),trunc()函数
- oracle的case when函数
- ORACLE case when 函数的使用技巧
- Oracle的trunc函数
- Oracle中decode函数与case when的使用
- Oracle中decode函数与case when的使用
- oracle中的nvl 、nvl2、decode、case when 函数的用法
- mysql中case-when-then和oracle的decode函数
- Oracle中decode函数与case when的使用
- Oracle中decode函数对case when的简化
- oracle之case...when, decode函数的使用
- ORACLE CASE WHEN 的用法
- oracle case when的用法
- oracle case when的用法
- oracle case when的用法
- oracle case when的用法
- oracle case when的使用方法
- oracle case when的用法
- [bigdata-094] drools+eclipse+maven开发一个drools的应用
- VMare Workstation Pro12.5.2+ubuntu-160.04.2-desktop-amd64
- 深入理解Java并发之synchronized实现原理
- LintCode-排序专题总结
- 排序总结
- oracle的case-when,row_number(),trunc()函数
- 【C++】【LeetCode】22. Generate Parentheses
- 【算法】程序猿不写代码是不对的68
- 大小写转换的好方法
- C++父子类继承时的隐藏、覆盖、重载
- Xcode自带调试命令集
- 面试笔试问到一些问题
- Spark配置属性详解
- BZOJ 3643 Phi的反函数