分析函数牛刀小试 (59天)

今天有个同事问我一个问题,想通过一条sql语句完成一个稍显复杂的查询。 结构如下面所示。需要算出tax apply 的值,但是需要汇总charge_amount列和tax_amount列的值

CDL_CRD

Charge_Amount

Tax_Amount

Tax apply

50

20

5

50*5/(100+18)

50

30

6

50*6/(100+18)

50

50

7

50*7/(100+18)

Total

50

100

18

比如第一条数据。 50*5/(100+18) 其中100=20+30+50 18=5+6+7 因为数据量很小,就几千条,所以我决定使用分析函数来,要不按照以前的方法,建临时表之类的还是有些麻烦了。 按照要求建了一个简单的表来测试一下。

SQL> create table test(cdl_crd number,charge_amount  number,tax_amount number);
Table created.
SQL> insert into test values(50,20,5);
insert into test values(50,30,6);
1 row created.
SQL> 
1 row created.
SQL> insert into test values(50,50,7);
1 row created.
SQL> commit;
Commit complete.

查看数据分布情况,和示例的一样。 SQL> select *from test; CDL_CRD CHARGE_AMOUNT TAX_AMOUNT ---------- ------------- ---------- 50 20 5 50 30 6 50 50 7 开始计算。 SQL> select cdl_crd*tax_amount/sum(tax_amount+charge_amount) over(partition by cdl_crd) apply_amount from test; APPLY_AMOUNT ------------ 2.11864407 2.96610169 2.54237288 关于分析函数确实能省去不少表的自连接带来的困扰,而且性能也不赖,在充分的测试之后使用其实还是很不错的。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-05-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

二十种实战调优MySQL性能优化的经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事...

442
来自专栏杨建荣的学习笔记

MySQL中的反连接(r12笔记第45天)

关于Oracle的半连接,反连接,我一直认为这是一个能讲很长时间的话题,所以在我的新书《Oracle DBA工作笔记》中讲性能优化的时候,我花了不少的笔墨做...

2575
来自专栏杨建荣的学习笔记

生产环境sql语句调优实战第二篇(r2第38天)

在生产环境通过sql monitor监控到有一条sql执行效率很差。执行了大约5个小时,得到的sql monitor报告如下: Global Informat...

2627
来自专栏大宽宽的碎碎念

数据库事务、隔离级别和锁ACID的真实含义隔离级别和并发控制MySQL和PostgreSQL对比如何写代码

44812
来自专栏Java架构沉思录

MySQL在并发场景下的优化手段

对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为...

822
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–现金销售(238)-2销售、发货

一、 VA01创建销售订单 在此活动中,输入现金销售订单。 1. 在 创建销售订单:初始屏幕 上,输入以下数据: 字段名称用户操作和值注释订单类型BV...

3715
来自专栏java达人

mysql性能优化的几条重要建议

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事...

2016
来自专栏葡萄城控件技术团队

一句SQL完成动态分级查询

在最近的活字格项目中使用ActiveReports报表设计器设计一个报表模板时,遇到一个多级分类的难题:需要将某个部门所有销售及下属部门的销售金额汇总,因为下属...

1868
来自专栏全栈工程师成长之路

MySQL学习笔记(基础篇)

33110
来自专栏java一日一条

MySQL 性能优化的最佳 20+ 条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的...

673

扫码关注云+社区