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