dan | b6e9f7a | 2018-05-19 14:15:29 +0000 | [diff] [blame] | 1 | # 2018 May 19 |
| 2 | # |
| 3 | # The author disclaims copyright to this source code. In place of |
| 4 | # a legal notice, here is a blessing: |
| 5 | # |
| 6 | # May you do good and not evil. |
| 7 | # May you find forgiveness for yourself and forgive others. |
| 8 | # May you share freely, never taking more than you give. |
| 9 | # |
| 10 | #*********************************************************************** |
| 11 | # This file implements regression tests for SQLite library. |
| 12 | # |
| 13 | |
| 14 | #################################################### |
| 15 | # DO NOT EDIT! THIS FILE IS AUTOMATICALLY GENERATED! |
| 16 | #################################################### |
| 17 | |
| 18 | set testdir [file dirname $argv0] |
| 19 | source $testdir/tester.tcl |
| 20 | set testprefix window2 |
| 21 | |
dan | 67a9b8e | 2018-06-22 20:51:35 +0000 | [diff] [blame] | 22 | ifcapable !windowfunc { finish_test ; return } |
dan | b6e9f7a | 2018-05-19 14:15:29 +0000 | [diff] [blame] | 23 | do_execsql_test 1.0 { |
| 24 | DROP TABLE IF EXISTS t1; |
| 25 | CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c TEXT, d INTEGER); |
| 26 | INSERT INTO t1 VALUES(1, 'odd', 'one', 1); |
| 27 | INSERT INTO t1 VALUES(2, 'even', 'two', 2); |
| 28 | INSERT INTO t1 VALUES(3, 'odd', 'three', 3); |
| 29 | INSERT INTO t1 VALUES(4, 'even', 'four', 4); |
| 30 | INSERT INTO t1 VALUES(5, 'odd', 'five', 5); |
| 31 | INSERT INTO t1 VALUES(6, 'even', 'six', 6); |
| 32 | } {} |
| 33 | |
| 34 | do_execsql_test 1.1 { |
| 35 | SELECT c, sum(d) OVER (PARTITION BY b ORDER BY c) FROM t1; |
dan | f9eae18 | 2018-05-21 19:45:11 +0000 | [diff] [blame] | 36 | } {four 4 six 10 two 12 five 5 one 6 three 9} |
dan | b6e9f7a | 2018-05-19 14:15:29 +0000 | [diff] [blame] | 37 | |
| 38 | do_execsql_test 1.2 { |
| 39 | SELECT sum(d) OVER () FROM t1; |
dan | f9eae18 | 2018-05-21 19:45:11 +0000 | [diff] [blame] | 40 | } {21 21 21 21 21 21} |
dan | b6e9f7a | 2018-05-19 14:15:29 +0000 | [diff] [blame] | 41 | |
| 42 | do_execsql_test 1.3 { |
| 43 | SELECT sum(d) OVER (PARTITION BY b) FROM t1; |
dan | f9eae18 | 2018-05-21 19:45:11 +0000 | [diff] [blame] | 44 | } {12 12 12 9 9 9} |
| 45 | |
dan | c3a20c1 | 2018-05-23 20:55:37 +0000 | [diff] [blame] | 46 | #========================================================================== |
| 47 | |
| 48 | do_execsql_test 2.1 { |
| 49 | SELECT a, sum(d) OVER ( |
| 50 | ORDER BY d |
| 51 | ROWS BETWEEN 1000 PRECEDING AND 1 FOLLOWING |
| 52 | ) FROM t1 |
| 53 | } {1 3 2 6 3 10 4 15 5 21 6 21} |
| 54 | |
| 55 | do_execsql_test 2.2 { |
| 56 | SELECT a, sum(d) OVER ( |
| 57 | ORDER BY d |
| 58 | ROWS BETWEEN 1000 PRECEDING AND 1000 FOLLOWING |
| 59 | ) FROM t1 |
| 60 | } {1 21 2 21 3 21 4 21 5 21 6 21} |
| 61 | |
| 62 | do_execsql_test 2.3 { |
| 63 | SELECT a, sum(d) OVER ( |
| 64 | ORDER BY d |
| 65 | ROWS BETWEEN 1 PRECEDING AND 1000 FOLLOWING |
| 66 | ) FROM t1 |
| 67 | } {1 21 2 21 3 20 4 18 5 15 6 11} |
| 68 | |
| 69 | do_execsql_test 2.4 { |
| 70 | SELECT a, sum(d) OVER ( |
| 71 | ORDER BY d |
| 72 | ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING |
| 73 | ) FROM t1 |
| 74 | } {1 3 2 6 3 9 4 12 5 15 6 11} |
| 75 | |
| 76 | do_execsql_test 2.5 { |
| 77 | SELECT a, sum(d) OVER ( |
| 78 | ORDER BY d |
| 79 | ROWS BETWEEN 1 PRECEDING AND 0 FOLLOWING |
| 80 | ) FROM t1 |
| 81 | } {1 1 2 3 3 5 4 7 5 9 6 11} |
| 82 | |
| 83 | do_execsql_test 2.6 { |
| 84 | SELECT a, sum(d) OVER ( |
| 85 | PARTITION BY b |
| 86 | ORDER BY d |
| 87 | ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING |
| 88 | ) FROM t1 |
| 89 | } {2 6 4 12 6 10 1 4 3 9 5 8} |
| 90 | |
| 91 | do_execsql_test 2.7 { |
| 92 | SELECT a, sum(d) OVER ( |
| 93 | PARTITION BY b |
| 94 | ORDER BY d |
| 95 | ROWS BETWEEN 0 PRECEDING AND 0 FOLLOWING |
| 96 | ) FROM t1 |
| 97 | } {2 2 4 4 6 6 1 1 3 3 5 5} |
| 98 | |
dan | 99652dd | 2018-05-24 17:49:14 +0000 | [diff] [blame] | 99 | do_execsql_test 2.8 { |
| 100 | SELECT a, sum(d) OVER ( |
| 101 | ORDER BY d |
| 102 | ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING |
| 103 | ) FROM t1 |
| 104 | } {1 6 2 9 3 12 4 15 5 11 6 6} |
| 105 | |
| 106 | do_execsql_test 2.9 { |
| 107 | SELECT a, sum(d) OVER ( |
| 108 | ORDER BY d |
| 109 | ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING |
| 110 | ) FROM t1 |
| 111 | } {1 6 2 10 3 15 4 21 5 21 6 21} |
| 112 | |
| 113 | do_execsql_test 2.10 { |
| 114 | SELECT a, sum(d) OVER ( |
| 115 | ORDER BY d |
| 116 | ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING |
| 117 | ) FROM t1 |
| 118 | } {1 6 2 9 3 12 4 15 5 11 6 6} |
| 119 | |
| 120 | do_execsql_test 2.11 { |
| 121 | SELECT a, sum(d) OVER ( |
| 122 | ORDER BY d |
| 123 | ROWS BETWEEN 2 PRECEDING AND CURRENT ROW |
| 124 | ) FROM t1 |
| 125 | } {1 1 2 3 3 6 4 9 5 12 6 15} |
| 126 | |
| 127 | do_execsql_test 2.13 { |
| 128 | SELECT a, sum(d) OVER ( |
| 129 | ORDER BY d |
| 130 | ROWS BETWEEN 2 PRECEDING AND UNBOUNDED FOLLOWING |
| 131 | ) FROM t1 |
| 132 | } {1 21 2 21 3 21 4 20 5 18 6 15} |
| 133 | |
dan | 31f5639 | 2018-05-24 21:10:57 +0000 | [diff] [blame] | 134 | do_execsql_test 2.14 { |
| 135 | SELECT a, sum(d) OVER ( |
| 136 | ORDER BY d |
| 137 | ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING |
| 138 | ) FROM t1 |
| 139 | } {1 {} 2 1 3 3 4 6 5 9 6 12} |
| 140 | |
| 141 | do_execsql_test 2.15 { |
| 142 | SELECT a, sum(d) OVER ( |
| 143 | PARTITION BY b |
| 144 | ORDER BY d |
| 145 | ROWS BETWEEN 1 PRECEDING AND 0 PRECEDING |
| 146 | ) FROM t1 |
| 147 | } {2 2 4 6 6 10 1 1 3 4 5 8} |
| 148 | |
| 149 | do_execsql_test 2.16 { |
| 150 | SELECT a, sum(d) OVER ( |
| 151 | PARTITION BY b |
| 152 | ORDER BY d |
| 153 | ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING |
| 154 | ) FROM t1 |
| 155 | } {2 {} 4 2 6 4 1 {} 3 1 5 3} |
| 156 | |
| 157 | do_execsql_test 2.17 { |
| 158 | SELECT a, sum(d) OVER ( |
| 159 | PARTITION BY b |
| 160 | ORDER BY d |
| 161 | ROWS BETWEEN 1 PRECEDING AND 2 PRECEDING |
| 162 | ) FROM t1 |
| 163 | } {2 {} 4 {} 6 {} 1 {} 3 {} 5 {}} |
| 164 | |
| 165 | do_execsql_test 2.18 { |
| 166 | SELECT a, sum(d) OVER ( |
| 167 | PARTITION BY b |
| 168 | ORDER BY d |
| 169 | ROWS BETWEEN UNBOUNDED PRECEDING AND 2 PRECEDING |
| 170 | ) FROM t1 |
| 171 | } {2 {} 4 {} 6 2 1 {} 3 {} 5 1} |
| 172 | |
dan | e105dd7 | 2018-05-25 09:29:11 +0000 | [diff] [blame] | 173 | do_execsql_test 2.19 { |
| 174 | SELECT a, sum(d) OVER ( |
| 175 | PARTITION BY b |
| 176 | ORDER BY d |
| 177 | ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING |
| 178 | ) FROM t1 |
| 179 | } {2 10 4 6 6 {} 1 8 3 5 5 {}} |
| 180 | |
| 181 | do_execsql_test 2.20 { |
| 182 | SELECT a, sum(d) OVER ( |
| 183 | ORDER BY d |
| 184 | ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING |
| 185 | ) FROM t1 |
| 186 | } {1 5 2 7 3 9 4 11 5 6 6 {}} |
| 187 | |
| 188 | do_execsql_test 2.21 { |
| 189 | SELECT a, sum(d) OVER ( |
| 190 | ORDER BY d |
| 191 | ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING |
| 192 | ) FROM t1 |
| 193 | } {1 20 2 18 3 15 4 11 5 6 6 {}} |
| 194 | |
| 195 | do_execsql_test 2.22 { |
| 196 | SELECT a, sum(d) OVER ( |
| 197 | PARTITION BY b |
| 198 | ORDER BY d |
| 199 | ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING |
| 200 | ) FROM t1 |
| 201 | } {2 10 4 6 6 {} 1 8 3 5 5 {}} |
| 202 | |
dan | 09590aa | 2018-05-25 20:30:17 +0000 | [diff] [blame] | 203 | do_execsql_test 2.23 { |
| 204 | SELECT a, sum(d) OVER ( |
| 205 | ORDER BY d |
| 206 | ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 207 | ) FROM t1 |
| 208 | } {1 21 2 20 3 18 4 15 5 11 6 6} |
| 209 | |
| 210 | do_execsql_test 2.24 { |
| 211 | SELECT a, sum(d) OVER ( |
| 212 | PARTITION BY a%2 |
| 213 | ORDER BY d |
| 214 | ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 215 | ) FROM t1 |
| 216 | } {2 12 4 10 6 6 1 9 3 8 5 5} |
| 217 | |
| 218 | do_execsql_test 2.25 { |
| 219 | SELECT a, sum(d) OVER ( |
| 220 | ORDER BY d |
| 221 | ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
| 222 | ) FROM t1 |
| 223 | } {1 21 2 21 3 21 4 21 5 21 6 21} |
| 224 | |
| 225 | do_execsql_test 2.26 { |
| 226 | SELECT a, sum(d) OVER ( |
| 227 | PARTITION BY b |
| 228 | ORDER BY d |
| 229 | ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
| 230 | ) FROM t1 |
| 231 | } {2 12 4 12 6 12 1 9 3 9 5 9} |
| 232 | |
| 233 | do_execsql_test 2.27 { |
| 234 | SELECT a, sum(d) OVER ( |
| 235 | ORDER BY d |
| 236 | ROWS BETWEEN CURRENT ROW AND CURRENT ROW |
| 237 | ) FROM t1 |
| 238 | } {1 1 2 2 3 3 4 4 5 5 6 6} |
| 239 | |
| 240 | do_execsql_test 2.28 { |
| 241 | SELECT a, sum(d) OVER ( |
| 242 | PARTITION BY b |
| 243 | ORDER BY d |
| 244 | ROWS BETWEEN CURRENT ROW AND CURRENT ROW |
| 245 | ) FROM t1 |
| 246 | } {2 2 4 4 6 6 1 1 3 3 5 5} |
| 247 | |
| 248 | do_execsql_test 2.29 { |
| 249 | SELECT a, sum(d) OVER ( |
| 250 | ORDER BY d |
| 251 | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 252 | ) FROM t1 |
| 253 | } {1 21 2 20 3 18 4 15 5 11 6 6} |
| 254 | |
| 255 | do_execsql_test 2.30 { |
| 256 | SELECT a, sum(d) OVER ( |
| 257 | ORDER BY b |
| 258 | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 259 | ) FROM t1 |
| 260 | } {2 21 4 21 6 21 1 9 3 9 5 9} |
| 261 | |
dan | 79d4544 | 2018-05-26 21:17:29 +0000 | [diff] [blame] | 262 | do_execsql_test 3.1 { |
| 263 | SELECT a, sum(d) OVER ( |
| 264 | PARTITION BY b ORDER BY d |
| 265 | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 266 | ) FROM t1 |
| 267 | } {2 12 4 10 6 6 1 9 3 8 5 5} |
| 268 | |
| 269 | do_execsql_test 3.2 { |
| 270 | SELECT a, sum(d) OVER ( |
| 271 | ORDER BY b |
| 272 | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 273 | ) FROM t1 |
| 274 | } {2 21 4 21 6 21 1 9 3 9 5 9} |
| 275 | |
| 276 | do_execsql_test 3.3 { |
| 277 | SELECT a, sum(d) OVER ( |
| 278 | ORDER BY d |
| 279 | ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
| 280 | ) FROM t1 |
| 281 | } {1 21 2 21 3 21 4 21 5 21 6 21} |
| 282 | |
| 283 | do_execsql_test 3.4 { |
| 284 | SELECT a, sum(d) OVER ( |
| 285 | ORDER BY d/2 |
| 286 | ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW |
| 287 | ) FROM t1 |
| 288 | } {1 1 2 3 3 6 4 10 5 15 6 21} |
| 289 | |
dan | 99652dd | 2018-05-24 17:49:14 +0000 | [diff] [blame] | 290 | #========================================================================== |
| 291 | |
dan | 79d4544 | 2018-05-26 21:17:29 +0000 | [diff] [blame] | 292 | do_execsql_test 4.0 { |
| 293 | DROP TABLE IF EXISTS t2; |
| 294 | CREATE TABLE t2(a INTEGER PRIMARY KEY, b INTEGER); |
| 295 | INSERT INTO t2(a, b) VALUES |
| 296 | (1,0), (2,74), (3,41), (4,74), (5,23), (6,99), (7,26), (8,33), (9,2), |
| 297 | (10,89), (11,81), (12,96), (13,59), (14,38), (15,68), (16,39), (17,62), |
| 298 | (18,91), (19,46), (20,6), (21,99), (22,97), (23,27), (24,46), (25,78), |
| 299 | (26,54), (27,97), (28,8), (29,67), (30,29), (31,93), (32,84), (33,77), |
| 300 | (34,23), (35,16), (36,16), (37,93), (38,65), (39,35), (40,47), (41,7), |
| 301 | (42,86), (43,74), (44,61), (45,91), (46,85), (47,24), (48,85), (49,43), |
| 302 | (50,59), (51,12), (52,32), (53,56), (54,3), (55,91), (56,22), (57,90), |
| 303 | (58,55), (59,15), (60,28), (61,89), (62,25), (63,47), (64,1), (65,56), |
| 304 | (66,40), (67,43), (68,56), (69,16), (70,75), (71,36), (72,89), (73,98), |
| 305 | (74,76), (75,81), (76,4), (77,94), (78,42), (79,30), (80,78), (81,33), |
| 306 | (82,29), (83,53), (84,63), (85,2), (86,87), (87,37), (88,80), (89,84), |
| 307 | (90,72), (91,41), (92,9), (93,61), (94,73), (95,95), (96,65), (97,13), |
| 308 | (98,58), (99,96), (100,98), (101,1), (102,21), (103,74), (104,65), (105,35), |
| 309 | (106,5), (107,73), (108,11), (109,51), (110,87), (111,41), (112,12), (113,8), |
| 310 | (114,20), (115,31), (116,31), (117,15), (118,95), (119,22), (120,73), |
| 311 | (121,79), (122,88), (123,34), (124,8), (125,11), (126,49), (127,34), |
| 312 | (128,90), (129,59), (130,96), (131,60), (132,55), (133,75), (134,77), |
| 313 | (135,44), (136,2), (137,7), (138,85), (139,57), (140,74), (141,29), (142,70), |
| 314 | (143,59), (144,19), (145,39), (146,26), (147,26), (148,47), (149,80), |
| 315 | (150,90), (151,36), (152,58), (153,47), (154,9), (155,72), (156,72), (157,66), |
| 316 | (158,33), (159,93), (160,75), (161,64), (162,81), (163,9), (164,23), (165,37), |
| 317 | (166,13), (167,12), (168,14), (169,62), (170,91), (171,36), (172,91), |
| 318 | (173,33), (174,15), (175,34), (176,36), (177,99), (178,3), (179,95), (180,69), |
| 319 | (181,58), (182,52), (183,30), (184,50), (185,84), (186,10), (187,84), |
| 320 | (188,33), (189,21), (190,39), (191,44), (192,58), (193,30), (194,38), |
| 321 | (195,34), (196,83), (197,27), (198,82), (199,17), (200,7); |
| 322 | } {} |
| 323 | |
| 324 | do_execsql_test 4.1 { |
| 325 | SELECT a, sum(b) OVER ( |
| 326 | PARTITION BY (b%10) |
| 327 | ORDER BY b |
| 328 | ) FROM t2 ORDER BY a; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 329 | } {1 0 2 754 3 251 4 754 5 101 6 1247 7 132 8 266 9 6 10 950 |
| 330 | 11 667 12 1052 13 535 14 128 15 428 16 250 17 336 18 1122 |
| 331 | 19 368 20 6 21 1247 22 1000 23 92 24 368 25 584 26 320 |
| 332 | 27 1000 28 24 29 478 30 133 31 1049 32 1090 33 632 34 101 |
| 333 | 35 54 36 54 37 1049 38 450 39 145 40 354 41 21 42 764 |
| 334 | 43 754 44 424 45 1122 46 930 47 42 48 930 49 352 50 535 |
| 335 | 51 42 52 118 53 536 54 6 55 1122 56 86 57 770 58 255 59 50 |
| 336 | 60 52 61 950 62 75 63 354 64 2 65 536 66 160 67 352 68 536 |
| 337 | 69 54 70 675 71 276 72 950 73 868 74 678 75 667 76 4 |
| 338 | 77 1184 78 160 79 120 80 584 81 266 82 133 83 405 84 468 |
| 339 | 85 6 86 806 87 166 88 500 89 1090 90 552 91 251 92 27 |
| 340 | 93 424 94 687 95 1215 96 450 97 32 98 360 99 1052 100 868 |
| 341 | 101 2 102 66 103 754 104 450 105 145 106 5 107 687 108 24 |
| 342 | 109 302 110 806 111 251 112 42 113 24 114 30 115 128 116 128 |
| 343 | 117 50 118 1215 119 86 120 687 121 683 122 672 123 178 124 24 |
| 344 | 125 24 126 299 127 178 128 770 129 535 130 1052 131 270 |
| 345 | 132 255 133 675 134 632 135 266 136 6 137 21 138 930 139 411 |
| 346 | 140 754 141 133 142 340 143 535 144 46 145 250 146 132 |
| 347 | 147 132 148 354 149 500 150 770 151 276 152 360 153 354 |
| 348 | 154 27 155 552 156 552 157 602 158 266 159 1049 160 675 |
| 349 | 161 384 162 667 163 27 164 101 165 166 166 32 167 42 168 18 |
| 350 | 169 336 170 1122 171 276 172 1122 173 266 174 50 175 178 |
| 351 | 176 276 177 1247 178 6 179 1215 180 604 181 360 182 212 |
| 352 | 183 120 184 210 185 1090 186 10 187 1090 188 266 189 66 |
| 353 | 190 250 191 266 192 360 193 120 194 128 195 178 196 770 |
| 354 | 197 92 198 634 199 38 200 21} |
dan | 79d4544 | 2018-05-26 21:17:29 +0000 | [diff] [blame] | 355 | |
| 356 | do_execsql_test 4.2 { |
| 357 | SELECT a, sum(b) OVER ( |
| 358 | PARTITION BY (b%10) |
| 359 | ORDER BY b |
| 360 | RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW |
| 361 | ) FROM t2 ORDER BY a; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 362 | } {1 0 2 754 3 251 4 754 5 101 6 1247 7 132 8 266 9 6 10 950 |
| 363 | 11 667 12 1052 13 535 14 128 15 428 16 250 17 336 18 1122 |
| 364 | 19 368 20 6 21 1247 22 1000 23 92 24 368 25 584 26 320 |
| 365 | 27 1000 28 24 29 478 30 133 31 1049 32 1090 33 632 34 101 |
| 366 | 35 54 36 54 37 1049 38 450 39 145 40 354 41 21 42 764 |
| 367 | 43 754 44 424 45 1122 46 930 47 42 48 930 49 352 50 535 |
| 368 | 51 42 52 118 53 536 54 6 55 1122 56 86 57 770 58 255 59 50 |
| 369 | 60 52 61 950 62 75 63 354 64 2 65 536 66 160 67 352 68 536 |
| 370 | 69 54 70 675 71 276 72 950 73 868 74 678 75 667 76 4 |
| 371 | 77 1184 78 160 79 120 80 584 81 266 82 133 83 405 84 468 |
| 372 | 85 6 86 806 87 166 88 500 89 1090 90 552 91 251 92 27 |
| 373 | 93 424 94 687 95 1215 96 450 97 32 98 360 99 1052 100 868 |
| 374 | 101 2 102 66 103 754 104 450 105 145 106 5 107 687 108 24 |
| 375 | 109 302 110 806 111 251 112 42 113 24 114 30 115 128 116 128 |
| 376 | 117 50 118 1215 119 86 120 687 121 683 122 672 123 178 124 24 |
| 377 | 125 24 126 299 127 178 128 770 129 535 130 1052 131 270 |
| 378 | 132 255 133 675 134 632 135 266 136 6 137 21 138 930 139 411 |
| 379 | 140 754 141 133 142 340 143 535 144 46 145 250 146 132 |
| 380 | 147 132 148 354 149 500 150 770 151 276 152 360 153 354 |
| 381 | 154 27 155 552 156 552 157 602 158 266 159 1049 160 675 |
| 382 | 161 384 162 667 163 27 164 101 165 166 166 32 167 42 168 18 |
| 383 | 169 336 170 1122 171 276 172 1122 173 266 174 50 175 178 |
| 384 | 176 276 177 1247 178 6 179 1215 180 604 181 360 182 212 |
| 385 | 183 120 184 210 185 1090 186 10 187 1090 188 266 189 66 |
| 386 | 190 250 191 266 192 360 193 120 194 128 195 178 196 770 |
| 387 | 197 92 198 634 199 38 200 21} |
dan | 79d4544 | 2018-05-26 21:17:29 +0000 | [diff] [blame] | 388 | |
| 389 | do_execsql_test 4.3 { |
| 390 | SELECT b, sum(b) OVER ( |
| 391 | ORDER BY b |
| 392 | ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW |
| 393 | ) FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 394 | } {0 0 1 1 1 2 2 4 2 6 2 8 3 11 3 14 4 18 5 23 6 29 7 36 |
| 395 | 7 43 7 50 8 58 8 66 8 74 9 83 9 92 9 101 10 111 11 122 |
| 396 | 11 133 12 145 12 157 12 169 13 182 13 195 14 209 15 224 |
| 397 | 15 239 15 254 16 270 16 286 16 302 17 319 19 338 20 358 |
| 398 | 21 379 21 400 22 422 22 444 23 467 23 490 23 513 24 537 |
| 399 | 25 562 26 588 26 614 26 640 27 667 27 694 28 722 29 751 |
| 400 | 29 780 29 809 30 839 30 869 30 899 31 930 31 961 32 993 |
| 401 | 33 1026 33 1059 33 1092 33 1125 33 1158 34 1192 34 1226 |
| 402 | 34 1260 34 1294 35 1329 35 1364 36 1400 36 1436 36 1472 |
| 403 | 36 1508 37 1545 37 1582 38 1620 38 1658 39 1697 39 1736 |
| 404 | 39 1775 40 1815 41 1856 41 1897 41 1938 42 1980 43 2023 |
| 405 | 43 2066 44 2110 44 2154 46 2200 46 2246 47 2293 47 2340 |
| 406 | 47 2387 47 2434 49 2483 50 2533 51 2584 52 2636 53 2689 |
| 407 | 54 2743 55 2798 55 2853 56 2909 56 2965 56 3021 57 3078 |
| 408 | 58 3136 58 3194 58 3252 58 3310 59 3369 59 3428 59 3487 |
| 409 | 59 3546 60 3606 61 3667 61 3728 62 3790 62 3852 63 3915 |
| 410 | 64 3979 65 4044 65 4109 65 4174 66 4240 67 4307 68 4375 |
| 411 | 69 4444 70 4514 72 4586 72 4658 72 4730 73 4803 73 4876 |
| 412 | 73 4949 74 5023 74 5097 74 5171 74 5245 74 5319 75 5394 |
| 413 | 75 5469 75 5544 76 5620 77 5697 77 5774 78 5852 78 5930 |
| 414 | 79 6009 80 6089 80 6169 81 6250 81 6331 81 6412 82 6494 |
| 415 | 83 6577 84 6661 84 6745 84 6829 84 6913 85 6998 85 7083 |
| 416 | 85 7168 86 7254 87 7341 87 7428 88 7516 89 7605 89 7694 |
| 417 | 89 7783 90 7873 90 7963 90 8053 91 8144 91 8235 91 8326 |
| 418 | 91 8417 91 8508 93 8601 93 8694 93 8787 94 8881 95 8976 |
| 419 | 95 9071 95 9166 96 9262 96 9358 96 9454 97 9551 97 9648 |
| 420 | 98 9746 98 9844 99 9943 99 10042 99 10141} |
dan | 79d4544 | 2018-05-26 21:17:29 +0000 | [diff] [blame] | 421 | |
| 422 | do_execsql_test 4.4 { |
| 423 | SELECT b, sum(b) OVER ( |
| 424 | ORDER BY b |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 425 | RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
dan | 79d4544 | 2018-05-26 21:17:29 +0000 | [diff] [blame] | 426 | ) FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 427 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 428 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 429 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 430 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 431 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 432 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 433 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 434 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 435 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 436 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 437 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 438 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 439 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 440 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 441 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 442 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 443 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 444 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 445 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 446 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 447 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 448 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 449 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 450 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 451 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 452 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 453 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 454 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 455 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 456 | |
| 457 | do_execsql_test 4.5 { |
| 458 | SELECT b, sum(b) OVER ( |
| 459 | ORDER BY b |
| 460 | RANGE BETWEEN CURRENT ROW AND CURRENT ROW |
| 461 | ) FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 462 | } {0 0 1 2 1 2 2 6 2 6 2 6 3 6 3 6 4 4 5 5 6 6 7 21 |
| 463 | 7 21 7 21 8 24 8 24 8 24 9 27 9 27 9 27 10 10 11 22 |
| 464 | 11 22 12 36 12 36 12 36 13 26 13 26 14 14 15 45 15 45 |
| 465 | 15 45 16 48 16 48 16 48 17 17 19 19 20 20 21 42 21 42 |
| 466 | 22 44 22 44 23 69 23 69 23 69 24 24 25 25 26 78 26 78 |
| 467 | 26 78 27 54 27 54 28 28 29 87 29 87 29 87 30 90 30 90 |
| 468 | 30 90 31 62 31 62 32 32 33 165 33 165 33 165 33 165 33 165 |
| 469 | 34 136 34 136 34 136 34 136 35 70 35 70 36 144 36 144 |
| 470 | 36 144 36 144 37 74 37 74 38 76 38 76 39 117 39 117 39 117 |
| 471 | 40 40 41 123 41 123 41 123 42 42 43 86 43 86 44 88 44 88 |
| 472 | 46 92 46 92 47 188 47 188 47 188 47 188 49 49 50 50 51 51 |
| 473 | 52 52 53 53 54 54 55 110 55 110 56 168 56 168 56 168 57 57 |
| 474 | 58 232 58 232 58 232 58 232 59 236 59 236 59 236 59 236 |
| 475 | 60 60 61 122 61 122 62 124 62 124 63 63 64 64 65 195 65 195 |
| 476 | 65 195 66 66 67 67 68 68 69 69 70 70 72 216 72 216 72 216 |
| 477 | 73 219 73 219 73 219 74 370 74 370 74 370 74 370 74 370 |
| 478 | 75 225 75 225 75 225 76 76 77 154 77 154 78 156 78 156 |
| 479 | 79 79 80 160 80 160 81 243 81 243 81 243 82 82 83 83 84 336 |
| 480 | 84 336 84 336 84 336 85 255 85 255 85 255 86 86 87 174 |
| 481 | 87 174 88 88 89 267 89 267 89 267 90 270 90 270 90 270 |
| 482 | 91 455 91 455 91 455 91 455 91 455 93 279 93 279 93 279 |
| 483 | 94 94 95 285 95 285 95 285 96 288 96 288 96 288 97 194 |
| 484 | 97 194 98 196 98 196 99 297 99 297 99 297} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 485 | |
| 486 | do_execsql_test 4.6.1 { |
| 487 | SELECT b, sum(b) OVER ( |
| 488 | RANGE BETWEEN CURRENT ROW AND CURRENT ROW |
| 489 | ) FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 490 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 491 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 492 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 493 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 494 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 495 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 496 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 497 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 498 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 499 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 500 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 501 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 502 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 503 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 504 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 505 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 506 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 507 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 508 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 509 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 510 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 511 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 512 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 513 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 514 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 515 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 516 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 517 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 518 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 519 | |
| 520 | do_execsql_test 4.6.2 { |
| 521 | SELECT b, sum(b) OVER () FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 522 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 523 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 524 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 525 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 526 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 527 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 528 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 529 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 530 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 531 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 532 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 533 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 534 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 535 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 536 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 537 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 538 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 539 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 540 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 541 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 542 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 543 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 544 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 545 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 546 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 547 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 548 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 549 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 550 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 551 | |
| 552 | do_execsql_test 4.6.3 { |
| 553 | SELECT b, sum(b) OVER ( |
| 554 | RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
| 555 | ) FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 556 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 557 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 558 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 559 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 560 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 561 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 562 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 563 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 564 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 565 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 566 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 567 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 568 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 569 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 570 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 571 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 572 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 573 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 574 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 575 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 576 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 577 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 578 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 579 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 580 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 581 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 582 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 583 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 584 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 585 | |
| 586 | do_execsql_test 4.6.4 { |
| 587 | SELECT b, sum(b) OVER ( |
| 588 | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 589 | ) FROM t2 ORDER BY b; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 590 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 591 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 592 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 593 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 594 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 595 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 596 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 597 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 598 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 599 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 600 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 601 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 602 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 603 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 604 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 605 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 606 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 607 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 608 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 609 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 610 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 611 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 612 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 613 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 614 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 615 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 616 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 617 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 618 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 619 | |
| 620 | do_execsql_test 4.7.1 { |
| 621 | SELECT b, sum(b) OVER ( |
| 622 | ROWS BETWEEN CURRENT ROW AND CURRENT ROW |
| 623 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 624 | } {0 0 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 5 5 6 6 7 7 7 7 |
| 625 | 7 7 8 8 8 8 8 8 9 9 9 9 9 9 10 10 11 11 11 11 12 12 |
| 626 | 12 12 12 12 13 13 13 13 14 14 15 15 15 15 15 15 16 16 |
| 627 | 16 16 16 16 17 17 19 19 20 20 21 21 21 21 22 22 22 22 |
| 628 | 23 23 23 23 23 23 24 24 25 25 26 26 26 26 26 26 27 27 |
| 629 | 27 27 28 28 29 29 29 29 29 29 30 30 30 30 30 30 31 31 |
| 630 | 31 31 32 32 33 33 33 33 33 33 33 33 33 33 34 34 34 34 |
| 631 | 34 34 34 34 35 35 35 35 36 36 36 36 36 36 36 36 37 37 |
| 632 | 37 37 38 38 38 38 39 39 39 39 39 39 40 40 41 41 41 41 |
| 633 | 41 41 42 42 43 43 43 43 44 44 44 44 46 46 46 46 47 47 |
| 634 | 47 47 47 47 47 47 49 49 50 50 51 51 52 52 53 53 54 54 |
| 635 | 55 55 55 55 56 56 56 56 56 56 57 57 58 58 58 58 58 58 |
| 636 | 58 58 59 59 59 59 59 59 59 59 60 60 61 61 61 61 62 62 |
| 637 | 62 62 63 63 64 64 65 65 65 65 65 65 66 66 67 67 68 68 |
| 638 | 69 69 70 70 72 72 72 72 72 72 73 73 73 73 73 73 74 74 |
| 639 | 74 74 74 74 74 74 74 74 75 75 75 75 75 75 76 76 77 77 |
| 640 | 77 77 78 78 78 78 79 79 80 80 80 80 81 81 81 81 81 81 |
| 641 | 82 82 83 83 84 84 84 84 84 84 84 84 85 85 85 85 85 85 |
| 642 | 86 86 87 87 87 87 88 88 89 89 89 89 89 89 90 90 90 90 |
| 643 | 90 90 91 91 91 91 91 91 91 91 91 91 93 93 93 93 93 93 |
| 644 | 94 94 95 95 95 95 95 95 96 96 96 96 96 96 97 97 97 97 |
| 645 | 98 98 98 98 99 99 99 99 99 99} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 646 | |
| 647 | do_execsql_test 4.7.2 { |
| 648 | SELECT b, sum(b) OVER ( |
| 649 | ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW |
| 650 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 651 | } {0 0 1 3379 1 5443 2 372 2 4473 2 7074 3 2916 3 9096 4 4049 |
| 652 | 5 5643 6 1047 7 2205 7 7081 7 10141 8 1553 8 5926 8 6422 |
| 653 | 9 4883 9 7932 9 8497 10 9544 11 5727 11 6433 12 2825 12 5918 |
| 654 | 12 8582 13 5190 13 8570 14 8596 15 3189 15 6023 15 8924 |
| 655 | 16 1942 16 1958 16 3590 17 10134 19 7474 20 5946 21 5464 |
| 656 | 21 9682 22 3029 22 6140 23 212 23 1926 23 8520 24 2626 |
| 657 | 25 3331 26 337 26 7539 26 7565 27 1270 27 10035 28 3217 |
| 658 | 29 1649 29 4355 29 7326 30 4215 30 9400 30 9853 31 5977 |
| 659 | 31 6008 32 2857 33 370 33 4326 33 8175 33 8909 33 9661 |
| 660 | 34 6414 34 6516 34 8958 34 9925 35 2151 35 5638 36 3701 |
| 661 | 36 7818 36 8785 36 8994 37 4597 37 8557 38 735 38 9891 39 842 |
| 662 | 39 7513 39 9721 40 3475 41 115 41 4874 41 5906 42 4185 |
| 663 | 43 2754 43 3518 44 7072 44 9765 46 1041 46 1316 47 2198 |
| 664 | 47 3378 47 7612 47 7923 49 6482 50 9450 51 5778 52 9370 |
| 665 | 53 4408 54 1448 55 3174 55 6876 56 2913 56 3435 56 3574 |
| 666 | 57 7223 58 5248 58 7876 58 9318 58 9823 59 697 59 2813 |
| 667 | 59 6665 59 7455 60 6821 61 2426 61 4944 62 904 62 8658 |
| 668 | 63 4471 64 8407 65 2116 65 5177 65 5603 66 8142 67 1620 |
| 669 | 68 803 69 9260 70 7396 72 4833 72 8004 72 8076 73 5017 |
| 670 | 73 5716 73 6213 74 74 74 189 74 2365 74 5538 74 7297 75 3665 |
| 671 | 75 6951 75 8343 76 3964 77 1903 77 7028 78 1394 78 4293 |
| 672 | 79 6292 80 4677 80 7692 81 542 81 4045 81 8488 82 10117 |
| 673 | 83 10008 84 1826 84 4761 84 9534 84 9628 85 2602 85 2711 |
| 674 | 85 7166 86 2291 87 4560 87 5865 88 6380 89 461 89 3306 |
| 675 | 89 3790 90 3119 90 6606 90 7782 91 995 91 2517 91 3007 |
| 676 | 91 8749 91 8876 93 1742 93 2051 93 8268 94 4143 95 5112 |
| 677 | 95 6118 95 9191 96 638 96 5344 96 6761 97 1243 97 1545 |
| 678 | 98 3888 98 5442 99 311 99 1146 99 9093} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 679 | |
| 680 | do_execsql_test 4.7.3 { |
| 681 | SELECT b, sum(b) OVER ( |
| 682 | ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
| 683 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 684 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 685 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 686 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 687 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 688 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 689 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 690 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 691 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 692 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 693 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 694 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 695 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 696 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 697 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 698 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 699 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 700 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 701 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 702 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 703 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 704 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 705 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 706 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 707 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 708 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 709 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 710 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 711 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 712 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 713 | |
| 714 | do_execsql_test 4.7.4 { |
| 715 | SELECT b, sum(b) OVER ( |
| 716 | ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 717 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 718 | } {0 10141 1 4699 1 6763 2 3069 2 5670 2 9771 3 1048 3 7228 |
| 719 | 4 6096 5 4503 6 9100 7 7 7 3067 7 7943 8 3727 8 4223 8 8596 |
| 720 | 9 1653 9 2218 9 5267 10 607 11 3719 11 4425 12 1571 12 4235 |
| 721 | 12 7328 13 1584 13 4964 14 1559 15 1232 15 4133 15 6967 |
| 722 | 16 6567 16 8199 16 8215 17 24 19 2686 20 4215 21 480 21 4698 |
| 723 | 22 4023 22 7134 23 1644 23 8238 23 9952 24 7539 25 6835 |
| 724 | 26 2602 26 2628 26 9830 27 133 27 8898 28 6952 29 2844 |
| 725 | 29 5815 29 8521 30 318 30 771 30 5956 31 4164 31 4195 32 7316 |
| 726 | 33 513 33 1265 33 1999 33 5848 33 9804 34 250 34 1217 34 3659 |
| 727 | 34 3761 35 4538 35 8025 36 1183 36 1392 36 2359 36 6476 |
| 728 | 37 1621 37 5581 38 288 38 9444 39 459 39 2667 39 9338 40 6706 |
| 729 | 41 4276 41 5308 41 10067 42 5998 43 6666 43 7430 44 420 |
| 730 | 44 3113 46 8871 46 9146 47 2265 47 2576 47 6810 47 7990 |
| 731 | 49 3708 50 741 51 4414 52 823 53 5786 54 8747 55 3320 55 7022 |
| 732 | 56 6623 56 6762 56 7284 57 2975 58 376 58 881 58 2323 58 4951 |
| 733 | 59 2745 59 3535 59 7387 59 9503 60 3380 61 5258 61 7776 |
| 734 | 62 1545 62 9299 63 5733 64 1798 65 4603 65 5029 65 8090 |
| 735 | 66 2065 67 8588 68 9406 69 950 70 2815 72 2137 72 2209 |
| 736 | 72 5380 73 4001 73 4498 73 5197 74 2918 74 4677 74 7850 |
| 737 | 74 10026 74 10141 75 1873 75 3265 75 6551 76 6253 77 3190 |
| 738 | 77 8315 78 5926 78 8825 79 3928 80 2529 80 5544 81 1734 |
| 739 | 81 6177 81 9680 82 106 83 216 84 597 84 691 84 5464 84 8399 |
| 740 | 85 3060 85 7515 85 7624 86 7936 87 4363 87 5668 88 3849 |
| 741 | 89 6440 89 6924 89 9769 90 2449 90 3625 90 7112 91 1356 |
| 742 | 91 1483 91 7225 91 7715 91 9237 93 1966 93 8183 93 8492 |
| 743 | 94 6092 95 1045 95 4118 95 5124 96 3476 96 4893 96 9599 |
| 744 | 97 8693 97 8995 98 4797 98 6351 99 1147 99 9094 99 9929} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 745 | |
| 746 | do_execsql_test 4.8.1 { |
| 747 | SELECT b, sum(b) OVER ( |
| 748 | ORDER BY a |
| 749 | ROWS BETWEEN CURRENT ROW AND CURRENT ROW |
| 750 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 751 | } {0 0 1 1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 5 5 6 6 7 7 7 7 |
| 752 | 7 7 8 8 8 8 8 8 9 9 9 9 9 9 10 10 11 11 11 11 12 12 |
| 753 | 12 12 12 12 13 13 13 13 14 14 15 15 15 15 15 15 16 16 |
| 754 | 16 16 16 16 17 17 19 19 20 20 21 21 21 21 22 22 22 22 |
| 755 | 23 23 23 23 23 23 24 24 25 25 26 26 26 26 26 26 27 27 |
| 756 | 27 27 28 28 29 29 29 29 29 29 30 30 30 30 30 30 31 31 |
| 757 | 31 31 32 32 33 33 33 33 33 33 33 33 33 33 34 34 34 34 |
| 758 | 34 34 34 34 35 35 35 35 36 36 36 36 36 36 36 36 37 37 |
| 759 | 37 37 38 38 38 38 39 39 39 39 39 39 40 40 41 41 41 41 |
| 760 | 41 41 42 42 43 43 43 43 44 44 44 44 46 46 46 46 47 47 |
| 761 | 47 47 47 47 47 47 49 49 50 50 51 51 52 52 53 53 54 54 |
| 762 | 55 55 55 55 56 56 56 56 56 56 57 57 58 58 58 58 58 58 |
| 763 | 58 58 59 59 59 59 59 59 59 59 60 60 61 61 61 61 62 62 |
| 764 | 62 62 63 63 64 64 65 65 65 65 65 65 66 66 67 67 68 68 |
| 765 | 69 69 70 70 72 72 72 72 72 72 73 73 73 73 73 73 74 74 |
| 766 | 74 74 74 74 74 74 74 74 75 75 75 75 75 75 76 76 77 77 |
| 767 | 77 77 78 78 78 78 79 79 80 80 80 80 81 81 81 81 81 81 |
| 768 | 82 82 83 83 84 84 84 84 84 84 84 84 85 85 85 85 85 85 |
| 769 | 86 86 87 87 87 87 88 88 89 89 89 89 89 89 90 90 90 90 |
| 770 | 90 90 91 91 91 91 91 91 91 91 91 91 93 93 93 93 93 93 |
| 771 | 94 94 95 95 95 95 95 95 96 96 96 96 96 96 97 97 97 97 |
| 772 | 98 98 98 98 99 99 99 99 99 99} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 773 | |
| 774 | do_execsql_test 4.8.2 { |
| 775 | SELECT b, sum(b) OVER ( |
| 776 | ORDER BY a |
| 777 | ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW |
| 778 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 779 | } {0 0 1 3379 1 5443 2 372 2 4473 2 7074 3 2916 3 9096 4 4049 |
| 780 | 5 5643 6 1047 7 2205 7 7081 7 10141 8 1553 8 5926 8 6422 |
| 781 | 9 4883 9 7932 9 8497 10 9544 11 5727 11 6433 12 2825 12 5918 |
| 782 | 12 8582 13 5190 13 8570 14 8596 15 3189 15 6023 15 8924 |
| 783 | 16 1942 16 1958 16 3590 17 10134 19 7474 20 5946 21 5464 |
| 784 | 21 9682 22 3029 22 6140 23 212 23 1926 23 8520 24 2626 |
| 785 | 25 3331 26 337 26 7539 26 7565 27 1270 27 10035 28 3217 |
| 786 | 29 1649 29 4355 29 7326 30 4215 30 9400 30 9853 31 5977 |
| 787 | 31 6008 32 2857 33 370 33 4326 33 8175 33 8909 33 9661 |
| 788 | 34 6414 34 6516 34 8958 34 9925 35 2151 35 5638 36 3701 |
| 789 | 36 7818 36 8785 36 8994 37 4597 37 8557 38 735 38 9891 39 842 |
| 790 | 39 7513 39 9721 40 3475 41 115 41 4874 41 5906 42 4185 |
| 791 | 43 2754 43 3518 44 7072 44 9765 46 1041 46 1316 47 2198 |
| 792 | 47 3378 47 7612 47 7923 49 6482 50 9450 51 5778 52 9370 |
| 793 | 53 4408 54 1448 55 3174 55 6876 56 2913 56 3435 56 3574 |
| 794 | 57 7223 58 5248 58 7876 58 9318 58 9823 59 697 59 2813 |
| 795 | 59 6665 59 7455 60 6821 61 2426 61 4944 62 904 62 8658 |
| 796 | 63 4471 64 8407 65 2116 65 5177 65 5603 66 8142 67 1620 |
| 797 | 68 803 69 9260 70 7396 72 4833 72 8004 72 8076 73 5017 |
| 798 | 73 5716 73 6213 74 74 74 189 74 2365 74 5538 74 7297 75 3665 |
| 799 | 75 6951 75 8343 76 3964 77 1903 77 7028 78 1394 78 4293 |
| 800 | 79 6292 80 4677 80 7692 81 542 81 4045 81 8488 82 10117 |
| 801 | 83 10008 84 1826 84 4761 84 9534 84 9628 85 2602 85 2711 |
| 802 | 85 7166 86 2291 87 4560 87 5865 88 6380 89 461 89 3306 |
| 803 | 89 3790 90 3119 90 6606 90 7782 91 995 91 2517 91 3007 |
| 804 | 91 8749 91 8876 93 1742 93 2051 93 8268 94 4143 95 5112 |
| 805 | 95 6118 95 9191 96 638 96 5344 96 6761 97 1243 97 1545 |
| 806 | 98 3888 98 5442 99 311 99 1146 99 9093} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 807 | |
| 808 | do_execsql_test 4.8.3 { |
| 809 | SELECT b, sum(b) OVER ( |
| 810 | ORDER BY a |
| 811 | ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING |
| 812 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 813 | } {0 10141 1 10141 1 10141 2 10141 2 10141 2 10141 3 10141 |
| 814 | 3 10141 4 10141 5 10141 6 10141 7 10141 7 10141 7 10141 |
| 815 | 8 10141 8 10141 8 10141 9 10141 9 10141 9 10141 10 10141 |
| 816 | 11 10141 11 10141 12 10141 12 10141 12 10141 13 10141 13 10141 |
| 817 | 14 10141 15 10141 15 10141 15 10141 16 10141 16 10141 16 10141 |
| 818 | 17 10141 19 10141 20 10141 21 10141 21 10141 22 10141 22 10141 |
| 819 | 23 10141 23 10141 23 10141 24 10141 25 10141 26 10141 26 10141 |
| 820 | 26 10141 27 10141 27 10141 28 10141 29 10141 29 10141 29 10141 |
| 821 | 30 10141 30 10141 30 10141 31 10141 31 10141 32 10141 33 10141 |
| 822 | 33 10141 33 10141 33 10141 33 10141 34 10141 34 10141 34 10141 |
| 823 | 34 10141 35 10141 35 10141 36 10141 36 10141 36 10141 36 10141 |
| 824 | 37 10141 37 10141 38 10141 38 10141 39 10141 39 10141 39 10141 |
| 825 | 40 10141 41 10141 41 10141 41 10141 42 10141 43 10141 43 10141 |
| 826 | 44 10141 44 10141 46 10141 46 10141 47 10141 47 10141 47 10141 |
| 827 | 47 10141 49 10141 50 10141 51 10141 52 10141 53 10141 54 10141 |
| 828 | 55 10141 55 10141 56 10141 56 10141 56 10141 57 10141 58 10141 |
| 829 | 58 10141 58 10141 58 10141 59 10141 59 10141 59 10141 59 10141 |
| 830 | 60 10141 61 10141 61 10141 62 10141 62 10141 63 10141 64 10141 |
| 831 | 65 10141 65 10141 65 10141 66 10141 67 10141 68 10141 69 10141 |
| 832 | 70 10141 72 10141 72 10141 72 10141 73 10141 73 10141 73 10141 |
| 833 | 74 10141 74 10141 74 10141 74 10141 74 10141 75 10141 75 10141 |
| 834 | 75 10141 76 10141 77 10141 77 10141 78 10141 78 10141 79 10141 |
| 835 | 80 10141 80 10141 81 10141 81 10141 81 10141 82 10141 83 10141 |
| 836 | 84 10141 84 10141 84 10141 84 10141 85 10141 85 10141 85 10141 |
| 837 | 86 10141 87 10141 87 10141 88 10141 89 10141 89 10141 89 10141 |
| 838 | 90 10141 90 10141 90 10141 91 10141 91 10141 91 10141 91 10141 |
| 839 | 91 10141 93 10141 93 10141 93 10141 94 10141 95 10141 95 10141 |
| 840 | 95 10141 96 10141 96 10141 96 10141 97 10141 97 10141 98 10141 |
| 841 | 98 10141 99 10141 99 10141 99 10141} |
dan | d6f784e | 2018-05-28 18:30:45 +0000 | [diff] [blame] | 842 | |
| 843 | do_execsql_test 4.8.4 { |
| 844 | SELECT b, sum(b) OVER ( |
| 845 | ORDER BY a |
| 846 | ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING |
| 847 | ) FROM t2 ORDER BY 1, 2; |
dan | 08f6de7 | 2019-05-10 14:26:32 +0000 | [diff] [blame] | 848 | } {0 10141 1 4699 1 6763 2 3069 2 5670 2 9771 3 1048 3 7228 |
| 849 | 4 6096 5 4503 6 9100 7 7 7 3067 7 7943 8 3727 8 4223 8 8596 |
| 850 | 9 1653 9 2218 9 5267 10 607 11 3719 11 4425 12 1571 12 4235 |
| 851 | 12 7328 13 1584 13 4964 14 1559 15 1232 15 4133 15 6967 |
| 852 | 16 6567 16 8199 16 8215 17 24 19 2686 20 4215 21 480 21 4698 |
| 853 | 22 4023 22 7134 23 1644 23 8238 23 9952 24 7539 25 6835 |
| 854 | 26 2602 26 2628 26 9830 27 133 27 8898 28 6952 29 2844 |
| 855 | 29 5815 29 8521 30 318 30 771 30 5956 31 4164 31 4195 32 7316 |
| 856 | 33 513 33 1265 33 1999 33 5848 33 9804 34 250 34 1217 34 3659 |
| 857 | 34 3761 35 4538 35 8025 36 1183 36 1392 36 2359 36 6476 |
| 858 | 37 1621 37 5581 38 288 38 9444 39 459 39 2667 39 9338 40 6706 |
| 859 | 41 4276 41 5308 41 10067 42 5998 43 6666 43 7430 44 420 |
| 860 | 44 3113 46 8871 46 9146 47 2265 47 2576 47 6810 47 7990 |
| 861 | 49 3708 50 741 51 4414 52 823 53 5786 54 8747 55 3320 55 7022 |
| 862 | 56 6623 56 6762 56 7284 57 2975 58 376 58 881 58 2323 58 4951 |
| 863 | 59 2745 59 3535 59 7387 59 9503 60 3380 61 5258 61 7776 |
| 864 | 62 1545 62 9299 63 5733 64 1798 65 4603 65 5029 65 8090 |
| 865 | 66 2065 67 8588 68 9406 69 950 70 2815 72 2137 72 2209 |
| 866 | 72 5380 73 4001 73 4498 73 5197 74 2918 74 4677 74 7850 |
| 867 | 74 10026 74 10141 75 1873 75 3265 75 6551 76 6253 77 3190 |
| 868 | 77 8315 78 5926 78 8825 79 3928 80 2529 80 5544 81 1734 |
| 869 | 81 6177 81 9680 82 106 83 216 84 597 84 691 84 5464 84 8399 |
| 870 | 85 3060 85 7515 85 7624 86 7936 87 4363 87 5668 88 3849 |
| 871 | 89 6440 89 6924 89 9769 90 2449 90 3625 90 7112 91 1356 |
| 872 | 91 1483 91 7225 91 7715 91 9237 93 1966 93 8183 93 8492 |
| 873 | 94 6092 95 1045 95 4118 95 5124 96 3476 96 4893 96 9599 |
| 874 | 97 8693 97 8995 98 4797 98 6351 99 1147 99 9094 99 9929} |
| 875 | |
| 876 | |
| 877 | do_test 4.9 { |
| 878 | set myres {} |
| 879 | foreach r [db eval {SELECT |
| 880 | rank() OVER win AS rank, |
| 881 | cume_dist() OVER win AS cume_dist FROM t1 |
| 882 | WINDOW win AS (ORDER BY 1);}] { |
| 883 | lappend myres [format %.4f [set r]] |
| 884 | } |
| 885 | set res2 {1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000} |
| 886 | set i 0 |
| 887 | foreach r [set myres] r2 [set res2] { |
| 888 | if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} { |
| 889 | error "list element [set i] does not match: got=[set r] expected=[set r2]" |
| 890 | } |
| 891 | incr i |
| 892 | } |
| 893 | set {} {} |
| 894 | } {} |
dan | f9eae18 | 2018-05-21 19:45:11 +0000 | [diff] [blame] | 895 | |
dan | b28c4e5 | 2019-07-05 17:38:55 +0000 | [diff] [blame] | 896 | do_execsql_test 4.10 { |
| 897 | SELECT count(*) OVER (ORDER BY b) FROM t1 |
| 898 | } {3 3 3 6 6 6} |
| 899 | |
dan | 1efcc9d | 2019-07-05 19:10:41 +0000 | [diff] [blame] | 900 | do_execsql_test 4.11 { |
| 901 | SELECT count(distinct a) FILTER (WHERE b='odd') FROM t1 |
| 902 | } {3} |
| 903 | |
dan | a51ddb1 | 2019-09-26 15:53:37 +0000 | [diff] [blame] | 904 | #========================================================================== |
| 905 | |
| 906 | do_execsql_test 5.0 { |
| 907 | DROP TABLE IF EXISTS t1; |
| 908 | CREATE TABLE t1(x INTEGER, y INTEGER); |
| 909 | INSERT INTO t1 VALUES(10, 1); |
| 910 | INSERT INTO t1 VALUES(20, 2); |
| 911 | INSERT INTO t1 VALUES(3, 3); |
| 912 | INSERT INTO t1 VALUES(2, 4); |
| 913 | INSERT INTO t1 VALUES(1, 5); |
| 914 | } {} |
| 915 | |
| 916 | |
| 917 | do_test 5.1 { |
| 918 | set myres {} |
| 919 | foreach r [db eval {SELECT avg(x) OVER (ORDER BY y) AS z FROM t1 ORDER BY z;}] { |
| 920 | lappend myres [format %.4f [set r]] |
| 921 | } |
| 922 | set res2 {7.2000 8.7500 10.0000 11.0000 15.0000} |
| 923 | set i 0 |
| 924 | foreach r [set myres] r2 [set res2] { |
| 925 | if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} { |
| 926 | error "list element [set i] does not match: got=[set r] expected=[set r2]" |
| 927 | } |
| 928 | incr i |
| 929 | } |
| 930 | set {} {} |
| 931 | } {} |
| 932 | |
dan | 6984334 | 2019-12-22 17:32:25 +0000 | [diff] [blame] | 933 | #========================================================================== |
| 934 | |
| 935 | do_execsql_test 6.0 { |
| 936 | DROP TABLE IF EXISTS t0; |
| 937 | CREATE TABLE t0(c0 INTEGER UNIQUE); |
| 938 | INSERT INTO t0 VALUES(0); |
| 939 | } {} |
| 940 | |
| 941 | do_execsql_test 6.1 { |
| 942 | SELECT DENSE_RANK() OVER(), LAG(0) OVER() FROM t0; |
| 943 | } {1 {}} |
| 944 | |
| 945 | do_execsql_test 6.2 { |
| 946 | SELECT * FROM t0 WHERE |
| 947 | (0, t0.c0) IN (SELECT DENSE_RANK() OVER(), LAG(0) OVER() FROM t0); |
| 948 | } {} |
| 949 | |
dan | d8d2fb9 | 2019-12-27 15:31:47 +0000 | [diff] [blame] | 950 | #========================================================================== |
| 951 | |
| 952 | do_execsql_test 7.0 { |
| 953 | DROP TABLE IF EXISTS t1; |
| 954 | CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER); |
| 955 | INSERT INTO t1 VALUES(1, 1, 1); |
| 956 | INSERT INTO t1 VALUES(1, 2, 2); |
| 957 | INSERT INTO t1 VALUES(3, 3, 3); |
| 958 | INSERT INTO t1 VALUES(3, 4, 4); |
| 959 | } {} |
| 960 | |
| 961 | do_execsql_test 7.1 { |
| 962 | SELECT c, sum(c) OVER win1 FROM t1 |
| 963 | WINDOW win1 AS (ORDER BY b) |
| 964 | } {1 1 2 3 3 6 4 10} |
| 965 | |
| 966 | do_execsql_test 7.2 { |
| 967 | SELECT c, sum(c) OVER win1 FROM t1 |
| 968 | WINDOW win1 AS (PARTITION BY 1 ORDER BY b) |
| 969 | } {1 1 2 3 3 6 4 10} |
| 970 | |
| 971 | do_execsql_test 7.3 { |
| 972 | SELECT c, sum(c) OVER win1 FROM t1 |
| 973 | WINDOW win1 AS (ORDER BY 1) |
| 974 | } {1 10 2 10 3 10 4 10} |
| 975 | |
dan | b6e9f7a | 2018-05-19 14:15:29 +0000 | [diff] [blame] | 976 | finish_test |