File: test_collate_and_grouping_sets.test

package info (click to toggle)
duckdb 1.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 564
file content (82 lines) | stat: -rw-r--r-- 2,354 bytes parent folder | download | duplicates (4)
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
# name: test/sql/collate/test_collate_and_grouping_sets.test
# description: Test collation and grouping sets.
# group: [collate]

require icu

statement ok
set default_collation=c;

statement ok
CREATE TABLE sales (
   product_id INT,
   region VARCHAR(50),
   year INT,
   amount_sold DECIMAL(10,2)
);

statement ok
INSERT INTO sales VALUES
  (1, 'North', 2020, 1000.00),
  (1, 'North', 2021, 1500.00),
  (1, 'South', 2020, 800.00),
  (1, 'South', 2021, 700.00),
  (2, 'North', 2020, 500.00),
  (2, 'North', 2021, 600.00),
  (2, 'South', 2020, 400.00),
  (2, 'South', 2021, 550.00);

statement ok
set default_collation=c;

query III nosort grouping_sets_collation_result 
SELECT product_id, region, SUM(amount_sold) AS total_amount
FROM sales
GROUP BY GROUPING SETS ((product_id), (region), ())
ORDER BY product_id, region, total_amount;

statement ok
set default_collation=en_us;

query III nosort grouping_sets_collation_result
SELECT product_id, region, SUM(amount_sold) AS total_amount
FROM sales
GROUP BY GROUPING SETS ((product_id), (region), ())
ORDER BY product_id, region, total_amount;


statement ok
set default_collation=c

query III nosort union_groups_collation_result
select NULL product_id, region, sum(amount_sold) from sales group by region
UNION ALL
select NULL product_id, NULL region, sum(amount_sold) from sales
UNION ALL
select product_id, NULL region, sum(amount_sold) from sales group by product_id order by 1,2;


statement ok
set default_collation=en_us;

query III nosort union_groups_collation_result
select NULL product_id, region, sum(amount_sold) from sales group by region
UNION ALL
select NULL product_id, NULL region, sum(amount_sold) from sales
UNION ALL
select product_id, NULL region, sum(amount_sold) from sales group by product_id order by 1,2;

# also test that union all is the same as using grouping sets

query III nosort grouping_sets_collation
SELECT product_id, region, SUM(amount_sold) AS total_amount
FROM sales
GROUP BY GROUPING SETS ((product_id), (region), ())
ORDER BY product_id, region, total_amount;

query III nosort grouping_sets_collation
select NULL product_id, region, sum(amount_sold) from sales group by region
UNION ALL
select NULL product_id, NULL region, sum(amount_sold) from sales
UNION ALL
select product_id, NULL region, sum(amount_sold) from sales group by product_id order by 1,2;