forked from vortex-data/vortex
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path36.sql
More file actions
59 lines (58 loc) · 1.8 KB
/
Copy path36.sql
File metadata and controls
59 lines (58 loc) · 1.8 KB
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
WITH results AS
(SELECT sum(ss_net_profit) AS ss_net_profit,
sum(ss_ext_sales_price) AS ss_ext_sales_price,
(sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin ,
i_category ,
i_class ,
0 AS g_category,
0 AS g_class
FROM store_sales ,
date_dim d1 ,
item ,
store
WHERE d1.d_year = 2001
AND d1.d_date_sk = ss_sold_date_sk
AND i_item_sk = ss_item_sk
AND s_store_sk = ss_store_sk
AND s_state ='TN'
GROUP BY i_category,
i_class) ,
results_rollup AS
(SELECT gross_margin,
i_category,
i_class,
0 AS t_category,
0 AS t_class,
0 AS lochierarchy
FROM results
UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin,
i_category,
NULL AS i_class,
0 AS t_category,
1 AS t_class,
1 AS lochierarchy
FROM results
GROUP BY i_category
UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin,
NULL AS i_category,
NULL AS i_class,
1 AS t_category,
1 AS t_class,
2 AS lochierarchy
FROM results)
SELECT gross_margin,
i_category,
i_class,
lochierarchy,
rank() OVER ( PARTITION BY lochierarchy,
CASE
WHEN t_class = 0 THEN i_category
END
ORDER BY gross_margin ASC) AS rank_within_parent
FROM results_rollup
ORDER BY lochierarchy DESC NULLS FIRST,
CASE
WHEN lochierarchy = 0 THEN i_category
END NULLS FIRST,
rank_within_parent NULLS FIRST
LIMIT 100;