同比 数据模型 环比_历史数据模型解决方案-历史数据模型解决方案
方案介紹
針對上面介紹常規實現方案的弊端,本文從數據結構設計入手提出了“歷史數據模型”解決方案。在物理表設計階段針對這類報表問題進行特殊處理,物理表數據結構設計如下:
字段
描述
Id
ID
Project
項目
Amount
本月投資額
TotalAmount
累計投資額(截止本期)
Year
年份
Month
月份
增加了TotalAmount字段記錄截止本月的累計投資額
注意:填報表設計時,該累計投資額為上個月的累計投資額+本月投資額,在填報表填報數據時自動計算得出并提交時回填至TotalAmount字段)
基于上面的數據結構,報表相關設計工作變得輕松簡單:
數據集設計:project_info: select * from project_info1 where year=?year and month=?mount
其中year為動態參數,表達式為:year(now());month為動態參數,表達式為:month(now())
報表設計:
A2:顯示項目信息,表達式:= project_info Select(PROJECT)
B2:顯示當月投資額,表達式:= project_info .amount
C2:顯示累計投資額,表達式:project_info.totalamount
D2:計算累計占比,表達式:=B2/C2
解決方案優勢:
1.?增加 “累計投資”字段,每次查詢直接讀上個月的“累計投資”,無需根據項目進行統計運算,效率更高。
2.?首次填寫沒有歷史數據的情況,可以手動直接輸入“累計投資”,當下個月的再次填寫時,累計投資就是上月的累計投資+本月投資,有效解決沒有歷史數據的難題。
3.?由于數據表結構和報表展現的數據形式一致,報表設計工作可按照常規的列表式報表設計即可,大大簡化報表設計工作。
更多應用
上面以“累計值”為例介紹了“歷史數據模型”的應用,該方案可引申應用于其他類似的報表問題中。
比如:
1.同比環比問題
表樣如下:
項目
本月投資
上月投資
去年同期投資
***
****
采用“歷史數據模型”,可設計數據結構如下:
字段
描述
Id
ID
Project
項目
Amount
本月投資額
PriorAmount
上月投資額
LastAmount
去年同期投資額
Year
年份
Month
月份
采用這樣的數據結構設計,簡單的sql查詢就可以得出上月值和去年同期值,不用逐次查詢上個月的值和去年相同月份的值。
2.多樣化的累計問題
表樣如下:
項目
本月投資
年度累計投資
季度累計投資
總累計投資
***
****
采用“歷史數據模型”,可設計數據結構如下:
字段
描述
Id
ID
Project
項目
Amount
本月投資額
YearAmount
上月投資額
LastYearAmount
去年同期投資額
TotalAmount
總累計投資額
Year
年份
Month
月份
采用這樣的數據結構設計,簡單的sql查詢就可以得出多種累計值,不用逐次查詢和計算去年的投資額合計,本年的投資額合計和總的投資額合計。
注意:歷史數據模型并非使用于所有的應用場景,一般在涉及周期性數據記錄的歷史數據獲取的情況下(比如以年、月、周、日報中的同比、環比、累計運算)才會用到,建議用戶評估報表需求和應用場景,合理使用該模型進行數據結構設計!
總結
以上是生活随笔為你收集整理的同比 数据模型 环比_历史数据模型解决方案-历史数据模型解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一键装机linux_(推荐)linux用
- 下一篇: 2-路插入排序c语言算法,浅谈2路插入排