您的位置:首页 > 数据库 > Oracle

oracle函数

2013-12-07 18:28 495 查看
写篇文章把我新学到的一些oracle函数记下来。。

1. ratio_to_report()  获取列的百分比

SQL> SELECT value1,ratio_to_report(value1) OVER() FROM aa;

VALUE1 RATIO_TO_REPORT(VALUE1)OVER()
---------- -----------------------------
1                    .047619048
2                    .095238095
3                    .142857143
4                     .19047619
5                    .238095238
6                    .285714286

6 rows selected.


如果需要分组,则over(partition by value1,2),按value1分组,保留2位小数。

2. lag()  lead()  可以查出同一字段下一个值或上一个值,并作为新的列值

SQL> SELECT * FROM aa;

ID1 VAL
---------- ----------
1 2
1 3
1 10
2 15
2 10
2 6
2 3
3 17

8 rows selected.

根据id1分组,val排序,获取上一行的val值

SQL> SELECT id1,val,LAG(val) OVER(PARTITION BY id1 ORDER BY val) FROM aa;

ID1 VAL LAG(VAL)OVER(PARTITIONBYID1ORDERBYVAL)
---------- ---------- --------------------------------------
1 2
1 3 2
1 10 3
2 3
2 6 3
2 10 6
2 15 10
3 17

8 rows selected.

根据val排序,获取下一行的val值
SQL> SELECT id1,val,LEAD(val) OVER(ORDER BY val) FROM aa;

ID1 VAL LEAD(VAL)OVER(ORDERBYVAL)
---------- ---------- -------------------------
1 2 3
1 3 3
2 3 6
2 6 10
1 10 10
2 10 15
2 15 17
3 17

8 rows selected.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: