FineReport DEMO
資料來源
本份範例中所使用資料為FileReport中內建資料庫FRDemoTW中的訂單資料集,使用欄位如圖,
以複合式報表呈現資料視覺化及資料集內容。
複合式報表
複合式報表指一個報表中包含多個模組,每一塊都類似一張單獨的報表或者一張圖表,塊與塊之間相對獨立,互不影響。
複合式報表特點:空白畫布式設計介面,每個模組相互獨立,專門解決大報表難題,儲存格擴展分離,互不影響。
複合式報表還存在一些不足:不支援自適應,儲存格擴展分離但組件依舊相互推開。
完成的報表cpt檔可點此下載,學習資源: FileReport11.0文檔
SQL Code
範例呈現基本數據分佈外,另套用RFM模型分析客群面向,主要表格由訂單資料集轉換如下:
WITH RFM_Scores AS (
SELECT
客戶ID
, CAST(ROUND(SUM(應付金額)) AS INT) AS 總應付金額
, COUNT(DISTINCT 訂單ID) AS 購買次數
, MIN(CAST((JulianDay(date('2012-01-01')) - JulianDay(SUBSTR(訂購日期, 1, 10))) AS INTEGER)) AS 最近購買至今天數
FROM
訂單
WHERE
SUBSTR(訂購日期, 1, 4) >= '2000' AND
CAST(SUBSTR(訂購日期, 1, 4) AS INT) IN (${Year})
GROUP BY
客戶ID
), Averages AS (
SELECT
AVG(總應付金額) AS 平均應付金額
, AVG(購買次數) AS 平均購買次數
, AVG(最近購買至今天數) AS 平均最近購買至今天數
FROM
RFM_Scores
), Final AS (
SELECT
RFM.客戶ID
, RFM.總應付金額
, AVG.平均應付金額
, RFM.購買次數
, AVG.平均購買次數
, RFM.最近購買至今天數
, AVG.平均最近購買至今天數
, CASE WHEN RFM.總應付金額 >= AVG.平均應付金額 THEN 1 ELSE 0 END AS Monetary_Score
, CASE WHEN RFM.購買次數 >= AVG.平均購買次數 THEN 1 ELSE 0 END AS Frequency_Score
, CASE WHEN RFM.最近購買至今天數 <= AVG.平均最近購買至今天數 THEN 1 ELSE 0 END AS Recency_Score
, (CASE WHEN RFM.總應付金額 >= AVG.平均應付金額 THEN 1 ELSE 0 END) +
(CASE WHEN RFM.購買次數 >= AVG.平均購買次數 THEN 1 ELSE 0 END) +
(CASE WHEN RFM.最近購買至今天數 <= AVG.平均最近購買至今天數 THEN 1 ELSE 0 END) AS Total_Score
, CAST(CASE WHEN RFM.總應付金額 >= AVG.平均應付金額 THEN 1 ELSE 0 END AS TEXT) ||
CAST(CASE WHEN RFM.購買次數 >= AVG.平均購買次數 THEN 1 ELSE 0 END AS TEXT) ||
CAST(CASE WHEN RFM.最近購買至今天數 <= AVG.平均最近購買至今天數 THEN 1 ELSE 0 END AS TEXT) AS RFM_String
FROM
RFM_Scores RFM,
Averages AVG
)
SELECT
*,
CASE
WHEN RFM_String = '111' THEN '高價值客戶'
WHEN RFM_String = '011' THEN '忠誠客戶'
WHEN RFM_String = '101' THEN '消費潛力客戶'
WHEN RFM_String = '001' THEN '新近客戶'
WHEN RFM_String = '110' THEN '常規客戶'
WHEN RFM_String = '100' THEN '流失風險客戶'
WHEN RFM_String = '010' THEN '低價值忠誠客戶'
ELSE '其他類型客戶'
END AS Customer_Type
FROM
Final;複合式報表內容截圖
資料年度2010-2011
資料年度2011
資料年度2010
訂單分析
訂單中訂購日期僅有2010年1~6月及2011年1~6月
比較2010年及2011年訂單分佈,可發現:
- 業績持平,同比沒有增加。
- 流失部分2010年高價值客戶,但流失業績由西部地區訂單填補。
- 高價值及忠誠客戶佔合併業績50%以上。