分析函数牛刀小试 (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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

10步骤优化SQL Server 数据库性能

作者从基础的数据库索引开始全面讲述了SQL Server数据库应用程序的性能优化,包括数据库设计和数据访问代码。系列文章如下: Top 10 steps to ...

1795
来自专栏高爽的专栏

如何实现按距离排序、范围查找

简介 现在几乎所有的O2O应用中都会存在“按范围搜素、离我最近、显示距离”等等基于位置的交互,那这样的功能是怎么实现的呢?本文提供的实现方式,适用于所有数据库。...

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

一条insert语句导致的性能问题分析(二)(r8笔记第43天)

今天对之前描述的问题一条insert语句导致的性能问题分析(一) 进行了进一步的补充。 有一条insert语句的主要性能瓶颈在于insert子句中的查询语句,查...

3015
来自专栏自然语言处理

结巴中文分词原理分析1

更改分词器(默认为 jieba.dt)的 tmp_dir 和 cache_file 属性,可分别指定缓存文件所在的文件夹及其文件名,用于受限的文件系统。

2243
来自专栏数据和云

极限优化:从75到2000,由技能到性能提升岂止20倍

崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 编辑手记:感谢崔华授权我们独家转载其精品文章,也欢迎大家向“Oracl...

2424
来自专栏学习有记

阅读查询计划:SQL Server 索引进阶 Level 9

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

深度解析dba_segments和sys.seg$中的细节差异(下) (r5笔记第28天)

继续昨天的内容:深度解析dba_segments和sys.seg$中的细节差异(上) (r5笔记第27天) 我们已经根据dba_segments和sys.seg...

2746
来自专栏用户画像

网上书店管理系统数据库 sql sever

1.数据库各数据对象的设计与实现:表、约束、完整性体现、查询、视图,要求用合理的数据体现。

1003
来自专栏java达人

MySQL的limit查询优化

我们大家都知道MySQL数据库的优化是相当重要的。其他最为常用也是最为需要优化的就是limit。MySQL的limit给分页带来了极大的方便,但数据量一大的时候...

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

每秒执行6000的简单SQL优化(二) (r10笔记第65天)

继续前几天的一次性能调优,这次调优难度不小,而且空间很小,看起来简直就是绝处逢生的感觉。下面的两条SQL语句执行频率极高,每秒达到6000次,希望能够优化。 s...

2868

扫码关注云+社区