xref: /sqlite-3.40.0/test/window3.tcl (revision c782a81a)
1c9a8668aSdan# 2018 May 19
2c9a8668aSdan#
3c9a8668aSdan# The author disclaims copyright to this source code.  In place of
4c9a8668aSdan# a legal notice, here is a blessing:
5c9a8668aSdan#
6c9a8668aSdan#    May you do good and not evil.
7c9a8668aSdan#    May you find forgiveness for yourself and forgive others.
8c9a8668aSdan#    May you share freely, never taking more than you give.
9c9a8668aSdan#
10c9a8668aSdan#***********************************************************************
11c9a8668aSdan#
12c9a8668aSdan
13c9a8668aSdansource [file join [file dirname $argv0] pg_common.tcl]
14c9a8668aSdan
15c9a8668aSdan#=========================================================================
16c9a8668aSdan
17c9a8668aSdanstart_test window3 "2018 May 31"
1867a9b8edSdanifcapable !windowfunc
19c9a8668aSdan
20c9a8668aSdanexecsql_test 1.0 {
21c9a8668aSdan  DROP TABLE IF EXISTS t2;
22c9a8668aSdan  CREATE TABLE t2(a INTEGER PRIMARY KEY, b INTEGER);
23c9a8668aSdan  INSERT INTO t2(a, b) VALUES
24c9a8668aSdan  (10,89), (11,81), (12,96), (13,59), (14,38), (15,68), (16,39), (17,62),
25c9a8668aSdan  (18,91), (19,46), (20,6), (21,99), (22,97), (23,27), (24,46), (25,78),
26c9a8668aSdan  (26,54), (27,97), (28,8), (29,67), (30,29), (31,93), (32,84), (33,77),
27c9a8668aSdan  (34,23), (35,16), (36,16), (37,93), (38,65), (39,35), (40,47), (41,7),
28c9a8668aSdan  (42,86), (43,74), (44,61), (45,91), (46,85), (47,24), (48,85), (49,43),
29c9a8668aSdan  (50,59), (51,12), (52,32), (53,56), (54,3), (55,91), (56,22), (57,90),
30c9a8668aSdan  (58,55), (59,15), (60,28), (61,89), (62,25), (63,47), (64,1), (65,56),
31c9a8668aSdan  (66,40), (67,43), (68,56), (69,16), (70,75), (71,36), (72,89), (73,98),
32c9a8668aSdan  (74,76), (75,81), (76,4), (77,94), (78,42), (79,30), (80,78), (81,33),
33c9a8668aSdan  (82,29), (83,53), (84,63), (85,2), (86,87), (87,37), (88,80), (89,84),
34c9a8668aSdan  (90,72), (91,41), (92,9), (93,61), (94,73), (95,95), (96,65), (97,13),
35c9a8668aSdan  (98,58), (99,96), (100,98), (101,1), (102,21), (103,74), (104,65), (105,35),
36c9a8668aSdan  (106,5), (107,73), (108,11), (109,51), (110,87), (111,41), (112,12), (113,8),
37c9a8668aSdan  (114,20), (115,31), (116,31), (117,15), (118,95), (119,22), (120,73),
38c9a8668aSdan  (121,79), (122,88), (123,34), (124,8), (125,11), (126,49), (127,34),
39c9a8668aSdan  (128,90), (129,59), (130,96), (131,60), (132,55), (133,75), (134,77),
40c9a8668aSdan  (135,44), (136,2), (137,7), (138,85), (139,57), (140,74), (141,29), (142,70),
41c9a8668aSdan  (143,59), (144,19), (145,39), (146,26), (147,26), (148,47), (149,80),
42c9a8668aSdan  (150,90), (151,36), (152,58), (153,47), (154,9), (155,72), (156,72), (157,66),
43c9a8668aSdan  (158,33), (159,93), (160,75), (161,64), (162,81), (163,9), (164,23), (165,37),
44c9a8668aSdan  (166,13), (167,12), (168,14), (169,62), (170,91), (171,36), (172,91),
45c9a8668aSdan  (173,33), (174,15), (175,34), (176,36), (177,99), (178,3), (179,95), (180,69),
46c9a8668aSdan  (181,58), (182,52), (183,30), (184,50), (185,84), (186,10), (187,84),
47c9a8668aSdan  (188,33), (189,21), (190,39), (191,44), (192,58), (193,30), (194,38),
48c9a8668aSdan  (195,34), (196,83), (197,27), (198,82), (199,17), (200,7);
49c9a8668aSdan}
50c9a8668aSdan
51c9a8668aSdanexecsql_test 1.1 {
52c9a8668aSdan  SELECT max(b) OVER (
53c9a8668aSdan    ORDER BY a
54c9a8668aSdan  ) FROM t2
55c9a8668aSdan}
56c9a8668aSdan
57c9a8668aSdanforeach {tn window} {
58c9a8668aSdan   1 "RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW"
59c9a8668aSdan   2 "RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING"
60c9a8668aSdan   3 "RANGE BETWEEN CURRENT ROW         AND CURRENT ROW"
61c9a8668aSdan   4 "RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING"
62c9a8668aSdan   5 "ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING"
63c9a8668aSdan   6 "ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING"
64c9a8668aSdan   7 "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW"
65c9a8668aSdan   8 "ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW"
66c9a8668aSdan   9 "ROWS BETWEEN CURRENT ROW         AND CURRENT ROW"
67c9a8668aSdan  10 "ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING"
68c9a8668aSdan  11 "ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING"
69c9a8668aSdan  12 "ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING"
70c9a8668aSdan  13 "ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING"
71c9a8668aSdan  14 "ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING"
72c9a8668aSdan  15 "ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING"
73c9a8668aSdan  16 "ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING"
74c9a8668aSdan  17 "ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING"
75*c782a81aSdan
76*c782a81aSdan  18 "ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW"
77*c782a81aSdan  19 "ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING EXCLUDE TIES"
78*c782a81aSdan  20 "ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING EXCLUDE GROUP"
79*c782a81aSdan
80c9a8668aSdan} {
81dfa552f4Sdan  execsql_test 1.$tn.2.1 "SELECT max(b) OVER ( ORDER BY a $window ) FROM t2"
82dfa552f4Sdan  execsql_test 1.$tn.2.2 "SELECT min(b) OVER ( ORDER BY a $window ) FROM t2"
83dfa552f4Sdan
84dfa552f4Sdan  execsql_test 1.$tn.3.1 "
85dfa552f4Sdan    SELECT row_number() OVER ( ORDER BY a $window ) FROM t2
86dfa552f4Sdan  "
87dfa552f4Sdan  execsql_test 1.$tn.3.2 "
88dfa552f4Sdan    SELECT row_number() OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
89dfa552f4Sdan  "
909c27758eSdan  execsql_test 1.$tn.3.3 "
919c27758eSdan    SELECT row_number() OVER ( $window ) FROM t2
929c27758eSdan  "
93dfa552f4Sdan
94dfa552f4Sdan  execsql_test 1.$tn.4.1 "
95dfa552f4Sdan    SELECT dense_rank() OVER ( ORDER BY a $window ) FROM t2
96dfa552f4Sdan  "
97dfa552f4Sdan  execsql_test 1.$tn.4.2 "
98dfa552f4Sdan    SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
99dfa552f4Sdan  "
100dfa552f4Sdan  execsql_test 1.$tn.4.3 "
101dfa552f4Sdan    SELECT dense_rank() OVER ( ORDER BY b $window ) FROM t2
102dfa552f4Sdan  "
103dfa552f4Sdan  execsql_test 1.$tn.4.4 "
104dfa552f4Sdan    SELECT dense_rank() OVER ( PARTITION BY b%10 ORDER BY b $window ) FROM t2
105dfa552f4Sdan  "
106dfa552f4Sdan  execsql_test 1.$tn.4.5 "
107dfa552f4Sdan    SELECT dense_rank() OVER ( ORDER BY b%10 $window ) FROM t2
108dfa552f4Sdan  "
109dfa552f4Sdan  execsql_test 1.$tn.4.6 "
110dfa552f4Sdan    SELECT dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 $window ) FROM t2
111dfa552f4Sdan  "
112dfa552f4Sdan
113dfa552f4Sdan  execsql_test 1.$tn.5.1 "
114dfa552f4Sdan    SELECT rank() OVER ( ORDER BY a $window ) FROM t2
115dfa552f4Sdan  "
116dfa552f4Sdan  execsql_test 1.$tn.5.2 "
117dfa552f4Sdan    SELECT rank() OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
118dfa552f4Sdan  "
119dfa552f4Sdan  execsql_test 1.$tn.5.3 "
120dfa552f4Sdan    SELECT rank() OVER ( ORDER BY b $window ) FROM t2
121dfa552f4Sdan  "
122dfa552f4Sdan  execsql_test 1.$tn.5.4 "
123dfa552f4Sdan    SELECT rank() OVER ( PARTITION BY b%10 ORDER BY b $window ) FROM t2
124dfa552f4Sdan  "
125dfa552f4Sdan  execsql_test 1.$tn.5.5 "
126dfa552f4Sdan    SELECT rank() OVER ( ORDER BY b%10 $window ) FROM t2
127dfa552f4Sdan  "
128dfa552f4Sdan  execsql_test 1.$tn.5.6 "
129dfa552f4Sdan    SELECT rank() OVER ( PARTITION BY b%2 ORDER BY b%10 $window ) FROM t2
130dfa552f4Sdan  "
131dfa552f4Sdan
132dfa552f4Sdan  execsql_test 1.$tn.6.1 "
133dfa552f4Sdan    SELECT
134dfa552f4Sdan      row_number() OVER ( PARTITION BY b%2 ORDER BY b%10 $window ),
135dfa552f4Sdan      rank() OVER ( PARTITION BY b%2 ORDER BY b%10 $window ),
136dfa552f4Sdan      dense_rank() OVER ( PARTITION BY b%2 ORDER BY b%10 $window )
137dfa552f4Sdan    FROM t2
138dfa552f4Sdan  "
139dfa552f4Sdan
140f1abe368Sdan  execsql_float_test 1.$tn.7.1 "
141f1abe368Sdan    SELECT percent_rank() OVER ( ORDER BY a $window ) FROM t2
142f1abe368Sdan  "
143f1abe368Sdan  execsql_float_test 1.$tn.7.2 "
144f1abe368Sdan    SELECT percent_rank() OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
145f1abe368Sdan  "
146f1abe368Sdan  execsql_float_test 1.$tn.7.3 "
147f1abe368Sdan    SELECT percent_rank() OVER ( ORDER BY b $window ) FROM t2
148f1abe368Sdan  "
149f1abe368Sdan  execsql_float_test 1.$tn.7.4 "
150f1abe368Sdan    SELECT percent_rank() OVER ( PARTITION BY b%10 ORDER BY b $window ) FROM t2
151f1abe368Sdan  "
152f1abe368Sdan  execsql_float_test 1.$tn.7.5 "
153f1abe368Sdan    SELECT percent_rank() OVER ( ORDER BY b%10 $window ) FROM t2
154f1abe368Sdan  "
155f1abe368Sdan  execsql_float_test 1.$tn.7.6 "
156f1abe368Sdan    SELECT percent_rank() OVER (PARTITION BY b%2 ORDER BY b%10 $window) FROM t2
157f1abe368Sdan  "
158dfa552f4Sdan
159f1abe368Sdan  execsql_float_test 1.$tn.8.1 "
160f1abe368Sdan    SELECT cume_dist() OVER ( ORDER BY a $window ) FROM t2
161f1abe368Sdan  "
162f1abe368Sdan  execsql_float_test 1.$tn.8.2 "
163f1abe368Sdan    SELECT cume_dist() OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
164f1abe368Sdan  "
165f1abe368Sdan  execsql_float_test 1.$tn.8.3 "
166f1abe368Sdan    SELECT cume_dist() OVER ( ORDER BY b $window ) FROM t2
167f1abe368Sdan  "
168f1abe368Sdan  execsql_float_test 1.$tn.8.4 "
169f1abe368Sdan    SELECT cume_dist() OVER ( PARTITION BY b%10 ORDER BY b $window ) FROM t2
170f1abe368Sdan  "
171f1abe368Sdan  execsql_float_test 1.$tn.8.5 "
172f1abe368Sdan    SELECT cume_dist() OVER ( ORDER BY b%10 $window ) FROM t2
173f1abe368Sdan  "
174f1abe368Sdan  execsql_float_test 1.$tn.8.6 "
175f1abe368Sdan    SELECT cume_dist() OVER ( PARTITION BY b%2 ORDER BY b%10 $window ) FROM t2
176f1abe368Sdan  "
177dfa552f4Sdan
1786bc5c9e7Sdan  execsql_float_test 1.$tn.8.1 "
1796bc5c9e7Sdan    SELECT ntile(100) OVER ( ORDER BY a $window ) FROM t2
1806bc5c9e7Sdan  "
1816bc5c9e7Sdan  execsql_float_test 1.$tn.8.2 "
1826bc5c9e7Sdan    SELECT ntile(101) OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
1836bc5c9e7Sdan  "
1846bc5c9e7Sdan  execsql_float_test 1.$tn.8.3 "
1856bc5c9e7Sdan    SELECT ntile(102) OVER ( ORDER BY b,a $window ) FROM t2
1866bc5c9e7Sdan  "
1876bc5c9e7Sdan  execsql_float_test 1.$tn.8.4 "
1886bc5c9e7Sdan    SELECT ntile(103) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
1896bc5c9e7Sdan  "
1906bc5c9e7Sdan  execsql_float_test 1.$tn.8.5 "
1916bc5c9e7Sdan    SELECT ntile(104) OVER ( ORDER BY b%10,a $window ) FROM t2
1926bc5c9e7Sdan  "
1936bc5c9e7Sdan  execsql_float_test 1.$tn.8.6 "
1946bc5c9e7Sdan    SELECT ntile(105) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
1956bc5c9e7Sdan  "
1969c27758eSdan  execsql_float_test 1.$tn.8.7 "
1979c27758eSdan    SELECT ntile(105) OVER ( $window ) FROM t2
1989c27758eSdan  "
199c9a8668aSdan
2001c5ed624Sdan  execsql_test 1.$tn.9.1 "
2011c5ed624Sdan    SELECT last_value(a+b) OVER ( ORDER BY a $window ) FROM t2
2021c5ed624Sdan  "
2031c5ed624Sdan  execsql_test 1.$tn.9.2 "
2041c5ed624Sdan    SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY a $window ) FROM t2
2051c5ed624Sdan  "
2061c5ed624Sdan  execsql_test 1.$tn.9.3 "
2071c5ed624Sdan    SELECT last_value(a+b) OVER ( ORDER BY b,a $window ) FROM t2
2081c5ed624Sdan  "
2091c5ed624Sdan  execsql_test 1.$tn.9.4 "
2101c5ed624Sdan    SELECT last_value(a+b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
2111c5ed624Sdan  "
2121c5ed624Sdan  execsql_test 1.$tn.9.5 "
2131c5ed624Sdan    SELECT last_value(a+b) OVER ( ORDER BY b%10,a $window ) FROM t2
2141c5ed624Sdan  "
2151c5ed624Sdan  execsql_test 1.$tn.9.6 "
2161c5ed624Sdan    SELECT last_value(a+b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
2171c5ed624Sdan  "
2181c5ed624Sdan
219ec891fd4Sdan  execsql_test 1.$tn.10.1 "
220ec891fd4Sdan    SELECT nth_value(b,b+1) OVER (ORDER BY a $window) FROM t2
221ec891fd4Sdan  "
2222e60568fSdan  execsql_test 1.$tn.10.2 "
223ec891fd4Sdan    SELECT nth_value(b,b+1) OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
224ec891fd4Sdan  "
2252e60568fSdan  execsql_test 1.$tn.10.3 "
226ec891fd4Sdan    SELECT nth_value(b,b+1) OVER ( ORDER BY b,a $window ) FROM t2
227ec891fd4Sdan  "
2282e60568fSdan  execsql_test 1.$tn.10.4 "
229ec891fd4Sdan    SELECT nth_value(b,b+1) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
230ec891fd4Sdan  "
2312e60568fSdan  execsql_test 1.$tn.10.5 "
232ec891fd4Sdan    SELECT nth_value(b,b+1) OVER ( ORDER BY b%10,a $window ) FROM t2
233ec891fd4Sdan  "
2342e60568fSdan  execsql_test 1.$tn.10.6 "
235ec891fd4Sdan    SELECT nth_value(b,b+1) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
236ec891fd4Sdan  "
2377095c002Sdan
2387095c002Sdan  execsql_test 1.$tn.11.1 "
2397095c002Sdan    SELECT first_value(b) OVER (ORDER BY a $window) FROM t2
2407095c002Sdan  "
2417095c002Sdan  execsql_test 1.$tn.11.2 "
2427095c002Sdan    SELECT first_value(b) OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
2437095c002Sdan  "
2447095c002Sdan  execsql_test 1.$tn.11.3 "
2457095c002Sdan    SELECT first_value(b) OVER ( ORDER BY b,a $window ) FROM t2
2467095c002Sdan  "
2477095c002Sdan  execsql_test 1.$tn.11.4 "
2487095c002Sdan    SELECT first_value(b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
2497095c002Sdan  "
2507095c002Sdan  execsql_test 1.$tn.11.5 "
2517095c002Sdan    SELECT first_value(b) OVER ( ORDER BY b%10,a $window ) FROM t2
2527095c002Sdan  "
2537095c002Sdan  execsql_test 1.$tn.11.6 "
2547095c002Sdan    SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
2557095c002Sdan  "
256fe4e25a0Sdan
257fe4e25a0Sdan  execsql_test 1.$tn.12.1 "
258fe4e25a0Sdan    SELECT lead(b,b) OVER (ORDER BY a $window) FROM t2
259fe4e25a0Sdan  "
260fe4e25a0Sdan  execsql_test 1.$tn.12.2 "
261fe4e25a0Sdan    SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
262fe4e25a0Sdan  "
263fe4e25a0Sdan  execsql_test 1.$tn.12.3 "
264fe4e25a0Sdan    SELECT lead(b,b) OVER ( ORDER BY b,a $window ) FROM t2
265fe4e25a0Sdan  "
266fe4e25a0Sdan  execsql_test 1.$tn.12.4 "
267fe4e25a0Sdan    SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
268fe4e25a0Sdan  "
269fe4e25a0Sdan  execsql_test 1.$tn.12.5 "
270fe4e25a0Sdan    SELECT lead(b,b) OVER ( ORDER BY b%10,a $window ) FROM t2
271fe4e25a0Sdan  "
272fe4e25a0Sdan  execsql_test 1.$tn.12.6 "
273fe4e25a0Sdan    SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
274fe4e25a0Sdan  "
275fe4e25a0Sdan
276fe4e25a0Sdan  execsql_test 1.$tn.13.1 "
277fe4e25a0Sdan    SELECT lag(b,b) OVER (ORDER BY a $window) FROM t2
278fe4e25a0Sdan  "
279fe4e25a0Sdan  execsql_test 1.$tn.13.2 "
280fe4e25a0Sdan    SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
281fe4e25a0Sdan  "
282fe4e25a0Sdan  execsql_test 1.$tn.13.3 "
283fe4e25a0Sdan    SELECT lag(b,b) OVER ( ORDER BY b,a $window ) FROM t2
284fe4e25a0Sdan  "
285fe4e25a0Sdan  execsql_test 1.$tn.13.4 "
286fe4e25a0Sdan    SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
287fe4e25a0Sdan  "
288fe4e25a0Sdan  execsql_test 1.$tn.13.5 "
289fe4e25a0Sdan    SELECT lag(b,b) OVER ( ORDER BY b%10,a $window ) FROM t2
290fe4e25a0Sdan  "
291fe4e25a0Sdan  execsql_test 1.$tn.13.6 "
292fe4e25a0Sdan    SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
293fe4e25a0Sdan  "
29403854d2eSdan
29503854d2eSdan  execsql_test 1.$tn.14.1 "
29603854d2eSdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER (ORDER BY a $window) FROM t2
29703854d2eSdan  "
29803854d2eSdan  execsql_test 1.$tn.14.2 "
29903854d2eSdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
30003854d2eSdan  "
30103854d2eSdan  execsql_test 1.$tn.14.3 "
30203854d2eSdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER ( ORDER BY b,a $window ) FROM t2
30303854d2eSdan  "
30403854d2eSdan  execsql_test 1.$tn.14.4 "
30503854d2eSdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
30603854d2eSdan  "
30703854d2eSdan  execsql_test 1.$tn.14.5 "
30803854d2eSdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER ( ORDER BY b%10,a $window ) FROM t2
30903854d2eSdan  "
31003854d2eSdan  execsql_test 1.$tn.14.6 "
31103854d2eSdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
31203854d2eSdan  "
3138b98560dSdan
314e7c9ca41Sdan  execsql_test 1.$tn.14.7 "
315e7c9ca41Sdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER (win1 ORDER BY b%10 $window)
316e7c9ca41Sdan    FROM t2
317e7c9ca41Sdan    WINDOW win1 AS (PARTITION BY b%2,a)
318e7c9ca41Sdan    ORDER BY 1
319e7c9ca41Sdan  "
320e7c9ca41Sdan
321e7c9ca41Sdan  execsql_test 1.$tn.14.8 "
322e7c9ca41Sdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER (win1 $window)
323e7c9ca41Sdan    FROM t2
324e7c9ca41Sdan    WINDOW win1 AS (PARTITION BY b%2,a ORDER BY b%10)
325e7c9ca41Sdan    ORDER BY 1
326e7c9ca41Sdan  "
327e7c9ca41Sdan
328e7c9ca41Sdan  execsql_test 1.$tn.14.9 "
329e7c9ca41Sdan    SELECT string_agg(CAST(b AS TEXT), '.') OVER win2
330e7c9ca41Sdan    FROM t2
331e7c9ca41Sdan    WINDOW win1 AS (PARTITION BY b%2,a ORDER BY b%10),
332e7c9ca41Sdan           win2 AS (win1 $window)
333e7c9ca41Sdan    ORDER BY 1
334e7c9ca41Sdan  "
335e7c9ca41Sdan
3368b98560dSdan  execsql_test 1.$tn.15.1 "
3377262ca94Sdan    SELECT count(*) OVER win, string_agg(CAST(b AS TEXT), '.')
3387262ca94Sdan    FILTER (WHERE a%2=0) OVER win FROM t2
3397262ca94Sdan    WINDOW win AS (ORDER BY a $window)
3408b98560dSdan  "
3418b98560dSdan
3428b98560dSdan  execsql_test 1.$tn.15.2 "
3437262ca94Sdan    SELECT count(*) OVER win, string_agg(CAST(b AS TEXT), '.')
3447262ca94Sdan    FILTER (WHERE 0=1) OVER win FROM t2
3457262ca94Sdan    WINDOW win AS (ORDER BY a $window)
3468b98560dSdan  "
3478b98560dSdan
3488b98560dSdan  execsql_test 1.$tn.15.3 "
3497262ca94Sdan    SELECT count(*) OVER win, string_agg(CAST(b AS TEXT), '.')
3507262ca94Sdan    FILTER (WHERE 1=0) OVER win FROM t2
3517262ca94Sdan    WINDOW win AS (PARTITION BY (a%10) ORDER BY a $window)
3528b98560dSdan  "
3538b98560dSdan
3548b98560dSdan  execsql_test 1.$tn.15.4 "
3557262ca94Sdan    SELECT count(*) OVER win, string_agg(CAST(b AS TEXT), '.')
3567262ca94Sdan    FILTER (WHERE a%2=0) OVER win FROM t2
3577262ca94Sdan    WINDOW win AS (PARTITION BY (a%10) ORDER BY a $window)
3588b98560dSdan  "
3597262ca94Sdan
3606bc5c9e7Sdan}
361dfa552f4Sdan
362c9a8668aSdanfinish_test
363c9a8668aSdan
364