【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;

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3