oracle
文章平均质量分 77
blt328
大家好,我叫BLT,一名技术爱好者,目前从事数据仓库、BI、数据挖掘相关工作。更多技术文章请关注公众号:BLT328
展开
-
创建存储过程语法
create or replace procedure p_blt_example(p_fm_dt date default sysdate - 1, p_to_dt date default sysdate) is /************************************************...原创 2018-03-08 18:31:03 · 1837 阅读 · 0 评论 -
14-oracle_数据库开发过程
前面基础知识已经学的差不多了,我们更重要的是如何应用这些基础知识在工作中,把业务的需求通过这些知识点落地,在学习具体案例之前,怎么保证我们的开发过程正确,以下几点是大家在工作中需要经常记住的。1:理解源头数据业务含义和格式。 我们在做任何开发之前,都应该熟悉源系统的业务,理解后台表里的数据格式,以及业务系统的展示情况,如果可以模似一次完整的业务流程,加深理解。其实一个业务系统最主要的核...原创 2019-05-04 11:21:20 · 335 阅读 · 0 评论 -
1-财务数据解决方案介绍
在接下来的分享里,我会讲解财务数据建模在企业中的应用,以及解决方案。在企业里,是很难准确的核算公司产品的成本,主要体现在以下几点:1):财务核算是按科目核算的,无法核算到产品上。比如薪酬这个成本在核算的时候是不能记录到产品的。2):非直接产品消耗的成本部门费用如何体现到产品上,比如一些后勤支持部门,非生产和销售部门等这些成本如何核算到对应的产品上。3):同一个部门或同一个岗位的人员...原创 2019-05-30 20:51:38 · 312 阅读 · 0 评论 -
2-物流和快递行业ABC模型
下图是一个简单的快递物流生命周期,描述了整个快递物流环节过程,以及主要的作业环节。快递路由:客户寄一个快递通过收件->支线运输到中转场->飞机、陆运、铁路等->目的地中转场->派件。网点类型:每个机构的职责不一样,相同类型的机构做相同的事,如果一个企业机构庞大,我们则需要对机构就进归类,抽象出他们的作业,方便模型建模,在上面我们定义了营业点、中转场这2种类型的机...原创 2019-05-30 20:52:47 · 1172 阅读 · 0 评论 -
3- ABC模型之资源
资源就是公司的成本,财务采用记账方式录入公司的成本项,按科目细分到各个费用项,但我们的ABC项目在分析和应用时,并不一定需要这么细粒度,所以就需要做一个归类。如何归类,就需要跟据公司的费用花费形和管理方式来定义了,总体可以按下面方法来归类:1:按公司管理层关注的细粒度划分,比如老板比较关心公司的人工成本,运输成本,设备成本,管理成本等等。此时我们就需要把相关的工资、社保、福利等费用归到人工成本...原创 2019-06-09 23:01:11 · 602 阅读 · 0 评论 -
4- ABC模型之业务数据生成
为了业务数据更真实,理解整个方法论的过程,我们用程序模似了物流的生命周期数据。所有程序代码和建表脚本,初始数据见https://github.com/blt328/abc_blt分别如下:1:机构数据在源头机构表我们定义了深圳、广州、上海、北京的机构信息,分别有营业点、业务区、分拨区、总部。营业点:负责收件和派件业务,完成业务区的指标。业务区:管理营业点,制定相关指标和制度...原创 2019-06-15 17:55:48 · 248 阅读 · 0 评论 -
5- ABC模型之业务建模
业务建模是最关键的一个环节,如何真实的反应业务流程,让成本更精确的分摊到对应的服务对象上,这个过程需要业务的专家和负责人,业务系统的产品经理、工程师都需要加入进来,并且共同讨论和决策,让业务加入是确定成本的分摊是否合理,各个利益部门是否达成共识,让技术加入是讨论数据和系统是否支持。在建模过程我们需要尽量做到抽象而标准,就是前面我们所说的,相同的网点类型做相同的事,抓主要放次要,比如在网点上我们...原创 2019-06-16 12:46:13 · 883 阅读 · 0 评论 -
6- ABC模型之动因
动因是反应成本消耗的因子,用于成本分摊计算。因动分为单一动因和复合动因。比如A,B,C去吃大餐,花费了300元,如果AA制,则每人动因占1个人,分摊后每人出100元,这就是单一动因,其实这样还是不太公平,A和B很自律,一直保持好身材,只吃一点点并且只吃素菜,C是一个体重150斤以上了,对形象无所谓了,吃的多又只吃肉,如果还按AA制,对A,B不太好,为了体现公平,他们3人达成一致,A,B每人占一...原创 2019-06-27 14:17:38 · 892 阅读 · 0 评论 -
9- ABC模型之数据分析和应用
ABC模型计算好成本数据后,我们需要应用成本数据,在之前,我们有提到过项目的目标。一:利润分析,在没有ABC成本之前,我相信要分析产品的利润,流向的利润,客户的利润是做不到的,哪现在我们来分析下这几个维度的利润。1:产品利润分析:select to_char(a.rec_dt, 'YYYYMM') month_code, a.prod_code, a...原创 2019-07-14 11:29:23 · 652 阅读 · 0 评论 -
10-数据分析和应用体系化
在上次的数据分析中,我们的数据分析都是一个个很零碎的看数方式,没有一个整体的思想,如何指导我们一步步的深挖原因,找到问题点。比如在上次我们只是单独从客户、流向、作业来看成本,如果下次用户想到看客户+流向,或者流向+作业一起来看呢,此时我们又要重新做数据了,最大的问题是这种事情是经常发生的,如果不从一开始就体系化,有一个主导思想,这样我们开发在后续中会很被动,天天给用户临时开发和提数。如下图:...原创 2019-07-14 11:30:43 · 353 阅读 · 0 评论 -
7- ABC模型之分摊(实现)
分摊:就是对成本的摊销过程,依据动因占比进行分摊。分摊过程是有过程依赖的,即需要做完RR分摊才能做RA,RO分摊。如下图是一个正规的分摊过程。不过我们的案例省掉了RO分摊过程。在上图中,大家需要理解几个字母的意思。R:资源(成本)A:作业(生产过程的流程作业)O:对象(企业的产品或服务)RR分摊:就是资源到资源的分摊过程,一般是为了区分在同一网点同一资源下,服务不同的作业,...原创 2019-06-30 21:54:38 · 986 阅读 · 0 评论 -
8- ABC模型之分摊(检测)
在成本的分摊过程中,我们需要保证2件重要的事:一:每步的分摊过程保证正确无误,分摊前和分摊后的成本要相等,此时我们需要做些检测机制,对每步分摊建立5种子过程状态,1:理论分摊金额,在分摊前确认的成本。2:实际分摊金额,在分摊过程中,我是拿了多少成本在分摊的。3:已分摊金额,能分摊下去的成本,即找到业务量的。4:未分摊金额,不能分摊下去的成本,即找不到业务量的成本。5:重复分...原创 2019-07-07 09:38:37 · 492 阅读 · 0 评论 -
13-oracle_数据库存储过程和包的开发
一:存储过程(图片左边的procedure目录):在数据库的实际开发过程中,我们不可能每个脚本用人工的方式执行,需要自动的批量提交脚本到数据库执行,数据库就提供了像存储过程这样的对象,方便开发人员把处理某个功能或报表的逻辑写到存储过程里。1)存储过程的优点:a.执行速度更快:在数据库中保存的存储过程语句都是编译过的b.允许模块化程序设计和可移植性更强:类似方法的复用(使用存储过...原创 2019-05-04 11:20:19 · 408 阅读 · 0 评论 -
12-oracle_分区
当表中的数据量不断增大,查询数据的速度就会变慢,这时就应该考虑对表进行分区。表分区后,逻辑上表仍然与原来表一样,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表的数据文件。如上表就是分区前后的差异,在分区前这个表的数据全放在一个文件上,导致数据量很大,按月份分区后,把相同的月份放在一个文件存储,多个文件存储不同月份的数据,这样在做数据查询的时候...原创 2019-04-14 09:53:10 · 139 阅读 · 0 评论 -
11-oracle_索引
索引大家可以理解为一本书里的目录,方便大家快速定位到自己要的章节,哪么在数据库里也一样,如果一个表数据有1000行数据,如何更快的查询到满足条件的记录,哪么索引就可以派上用场了,索引跟表一样,有自己的存储空间,只是表现形式不一样。索引有很多种:分区和非分区索引、常规B树索引、位图(bitmap)索引、翻转(reverse)索引等。其中,B树索引属于最常见的索引,今天我们讲解下B树索引的原理。...原创 2019-04-14 09:51:26 · 141 阅读 · 0 评论 -
1-oracle环境准备
此课程是oracle开发的第一课,我们先从环境的准备开始。1:oracle的下载和安装 大家登录下面网页下载安装文件https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html可以跟据情况选择11G或12C,目前我的环境是11G,如图下载完2个文件后解压在同一目...原创 2019-03-09 21:49:38 · 99 阅读 · 0 评论 -
2-plsql开发工具安装
本课主要是安装oracle的开发工具PLSQL Developer 12链接:https://pan.baidu.com/s/1PSVW3LYkAIMjADqVD4G3Ig提取码:kdxz安装步骤就不一步步截图了,大家默认的点下一步就行了,但是在安装软件前,请注意自己电脑上是否已经安装了oracle的服务端或客户端(即我们上节课的软件安装),不然在连接oracle服务器时会碰到连接串不...原创 2019-03-09 21:56:57 · 263 阅读 · 0 评论 -
3-oracle_创建用户
oracle内部有两个建好的用户:system和sys。用户可直接登录到sys用户以创建其他用户,因为sys具有创建别的用户的权限,为什么需要创建一个新的用户,主要是sys用户权限太大了,如果某天一不小心,就把生产的重要信息删除了,后果很严重的,另外一个是从管理上来考虑的,一个用户负责一个应用程序的数据管理,以及权限的控制。创建语法:create user 用户名 identified by...原创 2019-03-23 17:41:39 · 158 阅读 · 0 评论 -
4-oracle_基本数据类型
本课我只讲解一些基本常用的数据类型:Char:定长字符串,如果字符没有定义的长度,则后面补空格。Varchar2:可变长字符串。大家需要注意下这2个类型的区别,不然在后续的应用中会有一些坑,如下截图是我定义的一个表,其中A字段定义为char(10),B字段定义为varchar2(10),两个字段的长度都为10,我插入一条这相同的字符到表中,分别统计这2个字段的长度,会发现什么情况呢?...原创 2019-03-23 17:42:46 · 88 阅读 · 0 评论 -
5-oracle_创建表
表可以理解是数据库的一种复杂数据类型,用于存放具体数据的逻辑对象。表的形式是一个二维表格,由行和列组成,在统计学里你可以把行理解为样本,列理解为特征,在数据仓库里行就是一个事实,列就是由维度和度量组成。在创建表的时候,哪怎样去设计一个表的属性呢(列),比如我们要创建一个用户表,哪用户会有一些什么信息呢,即特征:用户名+性别+住址+学历+身高+年龄+收入等等,其中:用户名+性别+住址+学历是...原创 2019-03-23 17:43:49 · 121 阅读 · 0 评论 -
6-oracle_表关联
表关联是对2个表的列合并,怎么合并呢,这里需要一个连接信息,也就是关联字段,比如一个学生表里有学号+班级+出生日期,另一个表里有学号+科目+成绩,哪如果需要得到学号+班级+科目+成绩这样的信息,这就需要表关联,关联的字段用什么呢,只能用这2个表共同相关的字段,也就是学号这个字段,这样就能把2个表连接起来。哪分别有哪几种关联类型呢?有如下数据:1)内关联:inner join比如需求...原创 2019-03-23 17:44:39 · 218 阅读 · 0 评论 -
7-oracle_分析函数(一)
1.分组聚合函数聚合函数主要有求和:sum();最大数:max();最小数:min();平均值:avg();统计数:count()等,在应用此类函数的时候,要么是从全集合来看或者从分组来看的。分组就是我们之前所说的维度,比如在成绩表中,我们需要按科目求出总成绩,最低成绩,最高成绩,平均成绩,以及人数。select a.subject, sum(a.score) all_sc...原创 2019-03-23 17:45:58 · 101 阅读 · 0 评论 -
8-oracle_分析函数(二)
1): Lead(),Lag()其实这2个函数的作用非常好理解,Lead()就是取当前顺序的下一条记录,相对Lag()就是取当前顺序的上一行记录。经常会有判断在一定条件下的两条记录之间的时间差、或者数值差这样的需求。比如有一个员工号+部门+销售金额的表结构,现在求出每个部门的后一名与前一名的销售金额差,每个部门的第一个差异为0select user_no, dept...原创 2019-03-23 17:46:47 · 134 阅读 · 0 评论 -
0-oracle执行脚本
本课程的所有执行脚本都上传在github上。请参见:https://github.com/blt328/oracle_blt自行下载。原创 2019-03-23 17:57:23 · 222 阅读 · 0 评论 -
9-oracle_union和union all
Union是对结果集的并集操作,会要求2个集合是要有相同的字段和类型。Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序Union all:对两个结果集进行并集操作,包括重复行,不进行排序Union:我们对同一个表做2次查询,查询的结果并没有出现重复的2条出现:select user_no, dept_code, sales_amt from t...原创 2019-04-14 09:48:46 · 317 阅读 · 0 评论 -
10-oracle_表达式
1)关系表达式>,<,>=等在我们做查询语句时,经常会在where后面加上关系表达式。返回逻辑为TRUE的记录。select * from t_sales a where a.sales_amt > 5000;所以结果只返回了销售额大于5000的记录3条2)逻辑表达式and,or,notselect * from t_sales ...原创 2019-04-14 09:50:08 · 185 阅读 · 0 评论