-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tableau_Views.sql
187 lines (160 loc) · 6.31 KB
/
Tableau_Views.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
CREATE VIEW VW_DIM_CHANNEL AS
(
SELECT DIMCHANNELID, SOURCECHANNELID, SOURCECHANNELCATEGORYID, CHANNELNAME, CHANNELCATEGORY
FROM DIM_CHANNEL
);
CREATE VIEW VW_DIM_CUSTOMER AS
(
SELECT DIMCUSTOMERID, DIMLOCATIONID, SOURCECUSTOMERID, FULLNAME, FIRSTNAME, LASTNAME, GENDER, EMAILADDRESS, PHONENUMBER
FROM DIM_CUSTOMER
);
CREATE VIEW VW_DIM_LOCATION AS
(
SELECT DIMLOCATIONID, ADDRESS, CITY, REGION, COUNTRY, POSTALCODE
FROM DIM_LOCATION
);
CREATE VIEW VW_DIM_PRODUCT AS
(
SELECT DIMPRODUCTID, SOURCEPRODUCTID, SOURCEPRODUCTTYPEID, SOURCEPRODUCTCATEGORYID, PRODUCTNAME, PRODUCTTYPE, PRODUCTCATEGORY,
PRODUCTRETAILPRICE, PRODUCTWHOLESALEPRICE, PRODUCTCOST, PRODUCTRETAILPROFIT, PRODUCTWHOLESALEUNITPROFIT,
PRODUCTPROFITMARGINUNITPERCENT
FROM DIM_PRODUCT
);
CREATE VIEW VW_DIM_RESELLER AS
(
SELECT DIMRESELLERID, DIMLOCATIONID, SOURCERESELLERID, RESELLERNAME, CONTACTNAME, PHONENUMBER, EMAIL
FROM DIM_RESELLER
);
CREATE VIEW VW_DIM_STORE AS
(
SELECT DIMSTOREID,DIMLOCATIONID, SOURCESTOREID, STORENUMBER, STOREMANAGER
FROM DIM_STORE
);
CREATE VIEW VW_FACT_SALES AS
(
SELECT SALESHEADERID,SALESDETAILID, DIMPRODUCTID, DIMSTOREID, DIMRESELLERID, DIMCUSTOMERID, DIMCHANNELID, DATE_PKEY, DIMLOCATIONID,
SALE_AMOUNT, SALE_QUANTITY, SALE_UNIT_PRICE, SALE_EXTENDED_COST, SALE_TOTAL_PROFIT
FROM FACT_SALES
);
CREATE VIEW VW_FACT_PRODUCT_TARGET AS
(
SELECT DIMPRODUCTID, DATE_PKEY, PRODUCT_TARGET_SALES_QUANTITY
FROM FACT_PRODUCT_SALES_TARGET
);
CREATE VIEW VW_FACT_SRC_TARGET AS
(
SELECT DIMSTOREID, DIMRESELLERID, DIMCHANNELID, DATE_PKEY, SALES_TARGET_AMOUNT
FROM FACT_SRC_SALES_TARGET
);
-----VIEW 1
CREATE VIEW VW_STORE_PERFORMANCE_CUMMULATIVE AS
(
SELECT YEAR,MONTH_NAME,MONTH_NUM_IN_YEAR as MONTH_NUMBER, STORENUMBER,
SUM(ACT_AMT) OVER (PARTITION BY STORENUMBER ORDER BY MONTH_NUM_IN_YEAR ASC) AS ACT_CUMMULATIVE_SALE,
SUM(TARGET_AMT) OVER (PARTITION BY STORENUMBER ORDER BY MONTH_NUM_IN_YEAR ASC) AS TARGET_CUMMULATIVE_SALE
FROM
(
SELECT YEAR, MONTH_NAME, MONTH_NUM_IN_YEAR, STORENUMBER, SUM(TARGET_AMT) AS TARGET_AMT, SUM(ACT_AMT) AS ACT_AMT
FROM
(
SELECT DD.Year,DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER, SUM(FS.SALES_TARGET_AMOUNT) TARGET_AMT, 0 AS ACT_AMT
FROM FACT_SRC_SALES_TARGET FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
WHERE YEAR = 2014 AND STORENUMBER in (10,21)
GROUP BY DD.Year,DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER
UNION
SELECT DD.Year, DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER, 0 AS TARGET_AMT, SUM(FS.SALE_AMOUNT) AS ACT_AMT
FROM FACT_SALES FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
WHERE YEAR = 2014 AND STORENUMBER in (10,21)
GROUP BY DD.Year, DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER
)
GROUP BY YEAR, MONTH_NAME, MONTH_NUM_IN_YEAR, STORENUMBER
)
ORDER BY MONTH_NUM_IN_YEAR , STORENUMBER
);
CREATE VIEW VW_STORE_PERFORMANCE AS
(
SELECT YEAR, MONTH_NAME, MONTH_NUM_IN_YEAR AS MONTH_NUMBER, STORENUMBER, SUM(TARGET_AMT) AS TARGET_AMT, SUM(ACT_AMT) AS ACT_AMT,
ROUND((SUM(ACT_AMT)/SUM(TARGET_AMT))*100,2) AS PERCENT_TARGET_ACHIEVED
FROM
(
SELECT DD.Year,DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER, SUM(FS.SALES_TARGET_AMOUNT) TARGET_AMT, 0 AS ACT_AMT
FROM FACT_SRC_SALES_TARGET FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
WHERE YEAR = 2014 AND STORENUMBER in (10,21)
GROUP BY DD.Year,DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER
UNION
SELECT DD.Year, DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER, 0 AS TARGET_AMT, SUM(FS.SALE_AMOUNT) AS ACT_AMT
FROM FACT_SALES FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
WHERE YEAR = 2014 AND STORENUMBER in (10,21)
GROUP BY DD.Year, DD.MONTH_NAME, DD.MONTH_NUM_IN_YEAR, DS.STORENUMBER
)
GROUP BY YEAR, MONTH_NAME, MONTH_NUM_IN_YEAR, STORENUMBER
ORDER BY YEAR,MONTH_NUM_IN_YEAR
);
-----VIEW 2
CREATE VIEW VW_BONUS_SHARE AS
(
SELECT YEAR, STORENUMBER, SUM(TARGET_AMT) AS TARGET_AMT, SUM(ACT_AMT) AS ACT_AMT,
ROUND((SUM(ACT_AMT)/SUM(TARGET_AMT))*100,2) AS PERCENT_TARGET_ACHIEVED
FROM
(
SELECT DD.Year, DS.STORENUMBER, SUM(FS.SALES_TARGET_AMOUNT) TARGET_AMT, 0 AS ACT_AMT
FROM FACT_SRC_SALES_TARGET FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
WHERE YEAR = 2013 AND STORENUMBER in (10,21)
GROUP BY DD.Year, DS.STORENUMBER
UNION
SELECT DD.Year, DS.STORENUMBER, 0 AS TARGET_AMT, SUM(FS.SALE_AMOUNT) AS ACT_AMT
FROM FACT_SALES FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
WHERE YEAR = 2013 AND STORENUMBER in (10,21)
GROUP BY DD.Year, DS.STORENUMBER
)
GROUP BY YEAR, STORENUMBER
ORDER BY YEAR
);
-----View 3
CREATE VIEW VW_PRODUCT_SALES AS
(
SELECT DD.DAY_NAME, DD.DAY_NUM_IN_WEEK as DAY_NUMBER, DS.STORENUMBER, DP.PRODUCTNAME, DP.PRODUCTTYPE, DP.PRODUCTCATEGORY,
SUM(FS.SALE_QUANTITY) AS QUANTITY, SUM(FS.SALE_AMOUNT) AS SALE, SUM(FS.SALE_TOTAL_PROFIT) AS PROFIT
FROM FACT_SALES FS
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_PRODUCT DP ON FS.DIMPRODUCTID = DP.DIMPRODUCTID
WHERE STORENUMBER IN (10,21)
GROUP BY DD.DAY_NAME,DD.DAY_NUM_IN_WEEK, DS.STORENUMBER, DP.PRODUCTNAME, DP.PRODUCTTYPE, DP.PRODUCTCATEGORY
ORDER BY DAY_NUMBER, DS.STORENUMBER, DP.PRODUCTNAME
);
-----View 4
CREATE VIEW VW_STATE_PERFORMANCE AS
(
SELECT DD.DATE, DD.DAY_NAME, DD.YEAR, DD.MONTH_NAME, DL.REGION, Z.STORE_COUNT,
DP.PRODUCTNAME, DP.PRODUCTTYPE, DP.PRODUCTCATEGORY,
SUM(FS.SALE_QUANTITY) AS QUANTITY, SUM(FS.SALE_AMOUNT) AS SALE, SUM(FS.SALE_TOTAL_PROFIT) AS PROFIT
FROM FACT_SALES FS
INNER JOIN DIM_STORE DS ON FS.DIMSTOREID = DS.DIMSTOREID
INNER JOIN DIM_LOCATION DL ON DS.DIMLOCATIONID = DL.DIMLOCATIONID
INNER JOIN DIM_DATE DD ON FS.DATE_PKEY = DD.DATE_PKEY
INNER JOIN DIM_PRODUCT DP ON FS.DIMPRODUCTID = DP.DIMPRODUCTID
LEFT JOIN
(
SELECT DL.REGION, COUNT(DS.STORENUMBER) STORE_COUNT
FROM DIM_STORE DS
INNER JOIN DIM_LOCATION DL ON DS.DIMLOCATIONID = DL.DIMLOCATIONID
WHERE DL.REGION <> 'UNKNOWN'
GROUP BY DL.REGION
) Z ON DL.REGION = Z.REGION
WHERE DL.REGION <> 'UNKNOWN'
GROUP BY DD.DATE, DD.DAY_NAME, DD.YEAR, DD.MONTH_NAME, DL.REGION, Z.STORE_COUNT,
DP.PRODUCTNAME, DP.PRODUCTTYPE, DP.PRODUCTCATEGORY
);