【Oracle 11g】(九) 数据库开发案例(创建表、开发存储过程、测试)
--数据库开发案例: --统计各年份、月份、日期、iphone手机当日销量,月累计销售量 --数据库开发,开发过程: --1、甲方提出需求进行统计(文档) --2、理解需求:要什么字段、指标、维度、业务场景 ---------------维度:年、月、日、品牌 ---------------指标:销量、月累计销量 --3、数据源:要了解数据 --4、表之间的关联关系 select * from order_detail; --订单表 select * from phone_model; --手机型号 select * from brand; --品牌 --开发: --【第一步,创建目标表,存储需求的最终结果】 CREATE TABLE year_mon_iphone_sales( YEAR VARCHAR2(10), mon VARCHAR2(10), DAY VARCHAR2(10), brand VARCHAR2(10), sales NUMBER, leijisales NUMBER ); SELECT * FROM year_mon_iphone_sales; --【第二步,开发存储过程】 CREATE PROCEDURE prc_year_mon_iphone_sales AS /******************************************** 程序功能: 按 年、月、日期、品牌统计当日销量、月累计销量 业务逻辑: 从订单明细表,机型表,品牌表,获取相关字段信息 并分组统计 开发日期: 2020-07-xx 开发人员: xinRong 源 表: order_detail、phone_model、brand 目 标 表: year_mon_iphone_sales ********************************************/ BEGIN --清空目标表: DELETE FROM year_mon_iphone_sales; COMMIT; --业务逻辑开发--插入目标表: INSERT INTO year_mon_iphone_sales( YEAR, mon, DAY, brand, sales, leijisales ) SELECT YEAR, MONTH, DAY, brand_name, sales, SUM(sales)over(PARTITION BY YEAR, MONTH ORDER BY DAY)leijisales FROM( SELECT to_char(a.order_date, 'yyyy') YEAR, to_char(a.order_date, 'mm') MONTH, to_char(a.order_date, 'yyyy-mm-dd')DAY, c.brand_name, sum(a.amount) sales FROM order_detail a join phone_model b on a.mp_no = b.mp_no join brand c on b.brand_no = c.brand_no where c.brand_name = 'iphone' GROUP BY to_char(a.order_date, 'yyyy'), to_char(a.order_date, 'mm'), to_char(a.order_date, 'yyyy-mm-dd'), c.brand_name ); COMMIT; END; --【第三步,测试--调用存储过程】 BEGIN prc_year_mon_iphone_sales; END;

浙公网安备 33010602011771号