|
| 1 | +statement ok |
| 2 | +create or replace database union_case; |
| 3 | + |
| 4 | +statement ok |
| 5 | +use union_case; |
| 6 | + |
| 7 | +statement ok |
| 8 | +CREATE OR REPLACE TABLE abc ( |
| 9 | + id STRING, |
| 10 | + timestamp_col TIMESTAMP, |
| 11 | + category STRING, |
| 12 | + type_code STRING, |
| 13 | + type_name STRING, |
| 14 | + level_code STRING, |
| 15 | + class_code STRING, |
| 16 | + class_name STRING, |
| 17 | + sub_class_code STRING, |
| 18 | + region_code STRING, |
| 19 | + region_name STRING, |
| 20 | + sub_region_code STRING, |
| 21 | + sub_region_name STRING |
| 22 | +); |
| 23 | + |
| 24 | +statement ok |
| 25 | +INSERT INTO abc VALUES |
| 26 | +('001', '2024-01-15 10:00:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1000', 'region1', '', ''), |
| 27 | +('002', '2024-02-20 14:30:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1000', 'region1', '', ''), |
| 28 | +('003', '2024-03-10 09:15:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1000', 'region1', '', ''), |
| 29 | +('004', '2024-04-05 16:45:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1000', 'region1', '', ''), |
| 30 | +('005', '2024-01-25 11:20:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', '', ''), |
| 31 | +('006', '2024-02-28 13:40:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', '', ''), |
| 32 | +('007', '2024-03-15 10:30:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1200', 'region3', '', ''), |
| 33 | +('008', '2024-04-10 15:20:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1200', 'region3', '', ''), |
| 34 | +('009', '2024-01-30 09:45:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', 'SR102', 'subregion1'), |
| 35 | +('010', '2024-02-15 14:10:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', 'SR103', 'subregion2'), |
| 36 | +('011', '2024-03-20 11:50:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1200', 'region3', 'SR203', 'subregion3'), |
| 37 | +('012', '2024-04-15 16:30:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1200', 'region3', 'SR205', 'subregion4'), |
| 38 | +('101', '2023-01-15 10:00:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1000', 'region1', '', ''), |
| 39 | +('102', '2023-02-20 14:30:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1000', 'region1', '', ''), |
| 40 | +('103', '2023-03-10 09:15:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1000', 'region1', '', ''), |
| 41 | +('105', '2023-01-25 11:20:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', '', ''), |
| 42 | +('106', '2023-02-28 13:40:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', '', ''), |
| 43 | +('107', '2023-03-15 10:30:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1200', 'region3', '', ''), |
| 44 | +('109', '2023-01-30 09:45:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', 'SR102', 'subregion5'), |
| 45 | +('110', '2023-02-15 14:10:00', 'cat1', 'T001', 'type1', 'L1', 'C001', 'class1', 'SC001', 'R1100', 'region2', 'SR103', 'subregion6'), |
| 46 | +('111', '2023-03-20 11:50:00', 'cat2', 'T002', 'type2', 'L1', 'C002', 'class2', 'SC002', 'R1200', 'region3', 'SR203', 'subregion7'); |
| 47 | + |
| 48 | + |
| 49 | +statement ok |
| 50 | +create or replace table test3 as SELECT 'CODE1' AS code_id, location AS location_name FROM (SELECT '' AS location, '' AS parent_region, a.count_val AS count_val, CASE WHEN b.count_val IS NULL THEN - 1 ELSE round(a.count_val / b.count_val - 1, 6) * 100 END AS percent_diff, 1 AS rank, a.sub_class_code, '' AS current_name, '' AS parent_name FROM (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_class_code, COUNT(DISTINCT id) AS count_val FROM abc GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_class_code) AS a LEFT OUTER JOIN (SELECT category, type_code, type_name, level_code, class_code, class_name, 3 AS count_val FROM abc) AS b ON a.category = b.category AND a.type_name = b.type_name AND a.level_code = b.level_code AND a.class_code = b.class_code AND a.class_name = b.class_name UNION ALL SELECT a.sub_region_name AS location, a.region_code AS parent_region, a.count_val AS count_val, CASE WHEN b.count_val IS NULL THEN - 1 ELSE round(a.count_val / b.count_val - 1, 6) * 100 END AS percent_diff, 1 AS rank, a.sub_class_code, a.sub_region_name AS current_name, a.region_name AS parent_name FROM (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_class_code, sub_region_code, sub_region_name, region_code, region_name, COUNT(DISTINCT id) AS count_val FROM abc AS t1 GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_class_code, sub_region_code, sub_region_name, region_code, region_name) AS a LEFT OUTER JOIN (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_region_code, sub_region_name, region_code, COUNT(DISTINCT id) AS count_val FROM abc AS t2 GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_region_code, sub_region_name, region_code) AS b ON a.category = b.category AND a.type_name = b.type_name AND a.level_code = b.level_code AND a.class_code = b.class_code AND a.class_name = b.class_name AND a.sub_region_code = b.sub_region_code) AS t3; |
| 51 | + |
| 52 | + |
| 53 | +statement ok |
| 54 | +insert into test3 SELECT 'CODE1' AS code_id, location AS location_name FROM (SELECT '' AS location, '' AS parent_region, a.count_val AS count_val, CASE WHEN b.count_val IS NULL THEN - 1 ELSE round(a.count_val / b.count_val - 1, 6) * 100 END AS percent_diff, 1 AS rank, a.sub_class_code, '' AS current_name, '' AS parent_name FROM (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_class_code, COUNT(DISTINCT id) AS count_val FROM abc GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_class_code) AS a LEFT OUTER JOIN (SELECT category, type_code, type_name, level_code, class_code, class_name, 3 AS count_val FROM abc) AS b ON a.category = b.category AND a.type_name = b.type_name AND a.level_code = b.level_code AND a.class_code = b.class_code AND a.class_name = b.class_name UNION ALL SELECT a.sub_region_name AS location, a.region_code AS parent_region, a.count_val AS count_val, CASE WHEN b.count_val IS NULL THEN - 1 ELSE round(a.count_val / b.count_val - 1, 6) * 100 END AS percent_diff, 1 AS rank, a.sub_class_code, a.sub_region_name AS current_name, a.region_name AS parent_name FROM (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_class_code, sub_region_code, sub_region_name, region_code, region_name, COUNT(DISTINCT id) AS count_val FROM abc AS t1 GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_class_code, sub_region_code, sub_region_name, region_code, region_name) AS a LEFT OUTER JOIN (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_region_code, sub_region_name, region_code, COUNT(DISTINCT id) AS count_val FROM abc AS t2 GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_region_code, sub_region_name, region_code) AS b ON a.category = b.category AND a.type_name = b.type_name AND a.level_code = b.level_code AND a.class_code = b.class_code AND a.class_name = b.class_name AND a.sub_region_code = b.sub_region_code) AS t3; |
| 55 | + |
| 56 | + |
| 57 | +query TT rowsort |
| 58 | +SELECT 'CODE1' AS code_id, location AS location_name FROM (SELECT '' AS location, '' AS parent_region, a.count_val AS count_val, CASE WHEN b.count_val IS NULL THEN - 1 ELSE round(a.count_val / b.count_val - 1, 6) * 100 END AS percent_diff, 1 AS rank, a.sub_class_code, '' AS current_name, '' AS parent_name FROM (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_class_code, COUNT(DISTINCT id) AS count_val FROM abc GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_class_code) AS a LEFT OUTER JOIN (SELECT category, type_code, type_name, level_code, class_code, class_name, 3 AS count_val FROM abc) AS b ON a.category = b.category AND a.type_name = b.type_name AND a.level_code = b.level_code AND a.class_code = b.class_code AND a.class_name = b.class_name UNION ALL SELECT a.sub_region_name AS location, a.region_code AS parent_region, a.count_val AS count_val, CASE WHEN b.count_val IS NULL THEN - 1 ELSE round(a.count_val / b.count_val - 1, 6) * 100 END AS percent_diff, 1 AS rank, a.sub_class_code, a.sub_region_name AS current_name, a.region_name AS parent_name FROM (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_class_code, sub_region_code, sub_region_name, region_code, region_name, COUNT(DISTINCT id) AS count_val FROM abc AS t1 GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_class_code, sub_region_code, sub_region_name, region_code, region_name) AS a LEFT OUTER JOIN (SELECT category, type_code, type_name, level_code, class_code, class_name, sub_region_code, sub_region_name, region_code, COUNT(DISTINCT id) AS count_val FROM abc AS t2 GROUP BY category, type_code, type_name, level_code, class_code, class_name, sub_region_code, sub_region_name, region_code) AS b ON a.category = b.category AND a.type_name = b.type_name AND a.level_code = b.level_code AND a.class_code = b.class_code AND a.class_name = b.class_name AND a.sub_region_code = b.sub_region_code) AS t3; |
| 59 | +---- |
| 60 | +CODE1 (empty) |
| 61 | +CODE1 (empty) |
| 62 | +CODE1 (empty) |
| 63 | +CODE1 (empty) |
| 64 | +CODE1 (empty) |
| 65 | +CODE1 (empty) |
| 66 | +CODE1 (empty) |
| 67 | +CODE1 (empty) |
| 68 | +CODE1 (empty) |
| 69 | +CODE1 (empty) |
| 70 | +CODE1 (empty) |
| 71 | +CODE1 (empty) |
| 72 | +CODE1 (empty) |
| 73 | +CODE1 (empty) |
| 74 | +CODE1 (empty) |
| 75 | +CODE1 (empty) |
| 76 | +CODE1 (empty) |
| 77 | +CODE1 (empty) |
| 78 | +CODE1 (empty) |
| 79 | +CODE1 (empty) |
| 80 | +CODE1 (empty) |
| 81 | +CODE1 (empty) |
| 82 | +CODE1 (empty) |
| 83 | +CODE1 (empty) |
| 84 | +CODE1 (empty) |
| 85 | +CODE1 (empty) |
| 86 | +CODE1 (empty) |
| 87 | +CODE1 (empty) |
| 88 | +CODE1 (empty) |
| 89 | +CODE1 subregion1 |
| 90 | +CODE1 subregion1 |
| 91 | +CODE1 subregion2 |
| 92 | +CODE1 subregion2 |
| 93 | +CODE1 subregion3 |
| 94 | +CODE1 subregion3 |
| 95 | +CODE1 subregion4 |
| 96 | +CODE1 subregion5 |
| 97 | +CODE1 subregion5 |
| 98 | +CODE1 subregion6 |
| 99 | +CODE1 subregion6 |
| 100 | +CODE1 subregion7 |
| 101 | +CODE1 subregion7 |
| 102 | + |
| 103 | + |
| 104 | +statement ok |
| 105 | +create or replace table test(a string, b string, c string); |
| 106 | + |
| 107 | +statement ok |
| 108 | +insert into test values ('a', 'b', 'c'), ('d', 'e', 'f'); |
| 109 | + |
| 110 | +query TTT rowsort |
| 111 | +select '1' as a , b, c from test union all select a, a as b, a as c from test; |
| 112 | +---- |
| 113 | +1 b c |
| 114 | +1 e f |
| 115 | +a a a |
| 116 | +d d d |
| 117 | + |
| 118 | +query TTT rowsort |
| 119 | +select 'xx' as j, a, b from (select '1' as a , b, c from test union all select a, a as b, a as c from test); |
| 120 | +---- |
| 121 | +xx 1 b |
| 122 | +xx 1 e |
| 123 | +xx a a |
| 124 | +xx d d |
| 125 | + |
| 126 | +statement ok |
| 127 | +drop table abc; |
| 128 | + |
| 129 | +statement ok |
| 130 | +drop table test3; |
0 commit comments