blob: 4194f75355e6d1cf5f8a0d463d828b228bd3befa [file] [log] [blame]
dan6bc5c9e2018-06-04 18:55:11 +00001# 2018 June 04
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
18set testdir [file dirname $argv0]
19source $testdir/tester.tcl
20set testprefix window4
21
dan67a9b8e2018-06-22 20:51:35 +000022ifcapable !windowfunc { finish_test ; return }
dan6bc5c9e2018-06-04 18:55:11 +000023do_execsql_test 1.0 {
24 DROP TABLE IF EXISTS t3;
25 CREATE TABLE t3(a TEXT PRIMARY KEY);
26 INSERT INTO t3 VALUES('a'), ('b'), ('c'), ('d'), ('e');
27 INSERT INTO t3 VALUES('f'), ('g'), ('h'), ('i'), ('j');
28} {}
29
30do_execsql_test 1.1 {
31 SELECT a, ntile(1) OVER (ORDER BY a) FROM t3
32} {a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 j 1}
33
34do_execsql_test 1.2 {
35 SELECT a, ntile(2) OVER (ORDER BY a) FROM t3
36} {a 1 b 1 c 1 d 1 e 1 f 2 g 2 h 2 i 2 j 2}
37
38do_execsql_test 1.3 {
39 SELECT a, ntile(3) OVER (ORDER BY a) FROM t3
40} {a 1 b 1 c 1 d 1 e 2 f 2 g 2 h 3 i 3 j 3}
41
42do_execsql_test 1.4 {
43 SELECT a, ntile(4) OVER (ORDER BY a) FROM t3
44} {a 1 b 1 c 1 d 2 e 2 f 2 g 3 h 3 i 4 j 4}
45
46do_execsql_test 1.5 {
47 SELECT a, ntile(5) OVER (ORDER BY a) FROM t3
48} {a 1 b 1 c 2 d 2 e 3 f 3 g 4 h 4 i 5 j 5}
49
50do_execsql_test 1.6 {
51 SELECT a, ntile(6) OVER (ORDER BY a) FROM t3
52} {a 1 b 1 c 2 d 2 e 3 f 3 g 4 h 4 i 5 j 6}
53
54do_execsql_test 1.7 {
55 SELECT a, ntile(7) OVER (ORDER BY a) FROM t3
56} {a 1 b 1 c 2 d 2 e 3 f 3 g 4 h 5 i 6 j 7}
57
58do_execsql_test 1.8 {
59 SELECT a, ntile(8) OVER (ORDER BY a) FROM t3
60} {a 1 b 1 c 2 d 2 e 3 f 4 g 5 h 6 i 7 j 8}
61
62do_execsql_test 1.9 {
63 SELECT a, ntile(9) OVER (ORDER BY a) FROM t3
64} {a 1 b 1 c 2 d 3 e 4 f 5 g 6 h 7 i 8 j 9}
65
66do_execsql_test 1.10 {
67 SELECT a, ntile(10) OVER (ORDER BY a) FROM t3
68} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
69
70do_execsql_test 1.11 {
71 SELECT a, ntile(11) OVER (ORDER BY a) FROM t3
72} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
73
74do_execsql_test 1.12 {
75 SELECT a, ntile(12) OVER (ORDER BY a) FROM t3
76} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
77
78do_execsql_test 1.13 {
79 SELECT a, ntile(13) OVER (ORDER BY a) FROM t3
80} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
81
82do_execsql_test 1.14 {
83 SELECT a, ntile(14) OVER (ORDER BY a) FROM t3
84} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
85
86do_execsql_test 1.15 {
87 SELECT a, ntile(15) OVER (ORDER BY a) FROM t3
88} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
89
90do_execsql_test 1.16 {
91 SELECT a, ntile(16) OVER (ORDER BY a) FROM t3
92} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
93
94do_execsql_test 1.17 {
95 SELECT a, ntile(17) OVER (ORDER BY a) FROM t3
96} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
97
98do_execsql_test 1.18 {
99 SELECT a, ntile(18) OVER (ORDER BY a) FROM t3
100} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
101
102do_execsql_test 1.19 {
103 SELECT a, ntile(19) OVER (ORDER BY a) FROM t3
104} {a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10}
105
danec891fd2018-06-06 20:51:02 +0000106do_execsql_test 2.0 {
107 DROP TABLE IF EXISTS t4;
108 CREATE TABLE t4(a INTEGER PRIMARY KEY, b TEXT, c INTEGER);
109 INSERT INTO t4 VALUES(1, 'A', 9);
110 INSERT INTO t4 VALUES(2, 'B', 3);
111 INSERT INTO t4 VALUES(3, 'C', 2);
112 INSERT INTO t4 VALUES(4, 'D', 10);
113 INSERT INTO t4 VALUES(5, 'E', 5);
114 INSERT INTO t4 VALUES(6, 'F', 1);
115 INSERT INTO t4 VALUES(7, 'G', 1);
116 INSERT INTO t4 VALUES(8, 'H', 2);
117 INSERT INTO t4 VALUES(9, 'I', 10);
118 INSERT INTO t4 VALUES(10, 'J', 4);
119} {}
120
121do_execsql_test 2.1 {
122 SELECT a, nth_value(b, c) OVER (ORDER BY a) FROM t4
123} {1 {} 2 {} 3 B 4 {} 5 E 6 A 7 A 8 B 9 {} 10 D}
124
danfe4e25a2018-06-07 20:08:59 +0000125do_execsql_test 2.2.1 {
126 SELECT a, lead(b) OVER (ORDER BY a) FROM t4
127} {1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J 10 {}}
128
129do_execsql_test 2.2.2 {
130 SELECT a, lead(b, 2) OVER (ORDER BY a) FROM t4
131} {1 C 2 D 3 E 4 F 5 G 6 H 7 I 8 J 9 {} 10 {}}
132
133do_execsql_test 2.2.3 {
134 SELECT a, lead(b, 3, 'abc') OVER (ORDER BY a) FROM t4
135} {1 D 2 E 3 F 4 G 5 H 6 I 7 J 8 abc 9 abc 10 abc}
136
137do_execsql_test 2.3.1 {
138 SELECT a, lag(b) OVER (ORDER BY a) FROM t4
139} {1 {} 2 A 3 B 4 C 5 D 6 E 7 F 8 G 9 H 10 I}
140
141do_execsql_test 2.3.2 {
142 SELECT a, lag(b, 2) OVER (ORDER BY a) FROM t4
143} {1 {} 2 {} 3 A 4 B 5 C 6 D 7 E 8 F 9 G 10 H}
144
145do_execsql_test 2.3.3 {
146 SELECT a, lag(b, 3, 'abc') OVER (ORDER BY a) FROM t4
147} {1 abc 2 abc 3 abc 4 A 5 B 6 C 7 D 8 E 9 F 10 G}
148
dan03854d22018-06-08 11:45:28 +0000149do_execsql_test 2.4.1 {
150 SELECT group_concat(b, '.') OVER (
151 ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
152 ) FROM t4
dan108e6b22019-03-18 18:55:35 +0000153} {A.B.C.D.E.F.G.H.I.J B.C.D.E.F.G.H.I.J C.D.E.F.G.H.I.J D.E.F.G.H.I.J
154 E.F.G.H.I.J F.G.H.I.J G.H.I.J H.I.J I.J J}
dan03854d22018-06-08 11:45:28 +0000155
danec891fd2018-06-06 20:51:02 +0000156do_execsql_test 3.0 {
157 DROP TABLE IF EXISTS t5;
158 CREATE TABLE t5(a INTEGER PRIMARY KEY, b TEXT, c TEXT, d INTEGER);
159 INSERT INTO t5 VALUES(1, 'A', 'one', 5);
160 INSERT INTO t5 VALUES(2, 'B', 'two', 4);
161 INSERT INTO t5 VALUES(3, 'A', 'three', 3);
162 INSERT INTO t5 VALUES(4, 'B', 'four', 2);
163 INSERT INTO t5 VALUES(5, 'A', 'five', 1);
164} {}
165
166do_execsql_test 3.1 {
167 SELECT a, nth_value(c, d) OVER (ORDER BY b) FROM t5
168} {1 {} 3 five 5 one 2 two 4 three}
169
danec891fd2018-06-06 20:51:02 +0000170do_execsql_test 3.2 {
171 SELECT a, nth_value(c, d) OVER (PARTITION BY b ORDER BY a) FROM t5
172} {1 {} 3 {} 5 one 2 {} 4 four}
173
dane3bf6322018-06-08 20:58:27 +0000174do_execsql_test 3.3 {
175 SELECT a, count(*) OVER abc, count(*) OVER def FROM t5
176 WINDOW abc AS (ORDER BY a),
177 def AS (ORDER BY a DESC)
178 ORDER BY a;
179} {1 1 5 2 2 4 3 3 3 4 4 2 5 5 1}
180
dan8b985602018-06-09 17:43:45 +0000181do_execsql_test 3.4 {
182 SELECT a, max(a) FILTER (WHERE (a%2)=0) OVER w FROM t5
183 WINDOW w AS (ORDER BY a)
184} {1 {} 2 2 3 2 4 4 5 4}
185
dan26522d12018-06-11 18:16:51 +0000186do_execsql_test 3.5.1 {
187 SELECT a, max(c) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 2 PRECEDING)
188 FROM t5
189} {1 {} 2 {} 3 {} 4 {} 5 {}}
190
191do_execsql_test 3.5.2 {
192 SELECT a, max(c) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
193 FROM t5
194} {1 {} 2 one 3 two 4 three 5 four}
195
196do_execsql_test 3.5.3 {
197 SELECT a, max(c) OVER (ORDER BY a ROWS BETWEEN 0 PRECEDING AND 0 PRECEDING)
198 FROM t5
199} {1 one 2 two 3 three 4 four 5 five}
200
201do_execsql_test 3.6.1 {
202 SELECT a, max(c) OVER (ORDER BY a ROWS BETWEEN 2 FOLLOWING AND 1 FOLLOWING)
203 FROM t5
204} {1 {} 2 {} 3 {} 4 {} 5 {}}
205
206do_execsql_test 3.6.2 {
207 SELECT a, max(c) OVER (ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING)
208 FROM t5
209} {1 two 2 three 3 four 4 five 5 {}}
210
211do_execsql_test 3.6.3 {
212 SELECT a, max(c) OVER (ORDER BY a ROWS BETWEEN 0 FOLLOWING AND 0 FOLLOWING)
213 FROM t5
214} {1 one 2 two 3 three 4 four 5 five}
215
dan9a947222018-06-14 19:06:36 +0000216#==========================================================================
217
dan73925692018-06-12 18:40:17 +0000218do_execsql_test 4.0 {
219 DROP TABLE IF EXISTS ttt;
220 CREATE TABLE ttt(a INTEGER PRIMARY KEY, b INTEGER, c INTEGER);
221 INSERT INTO ttt VALUES(1, 1, 1);
222 INSERT INTO ttt VALUES(2, 2, 2);
223 INSERT INTO ttt VALUES(3, 3, 3);
224
225 INSERT INTO ttt VALUES(4, 1, 2);
226 INSERT INTO ttt VALUES(5, 2, 3);
227 INSERT INTO ttt VALUES(6, 3, 4);
228
229 INSERT INTO ttt VALUES(7, 1, 3);
230 INSERT INTO ttt VALUES(8, 2, 4);
231 INSERT INTO ttt VALUES(9, 3, 5);
232} {}
233
234do_execsql_test 4.1 {
235 SELECT max(c), max(b) OVER (ORDER BY b) FROM ttt GROUP BY b;
236} {3 1 4 2 5 3}
237
danc0bb4452018-06-12 20:53:38 +0000238do_execsql_test 4.2 {
239 SELECT max(b) OVER (ORDER BY max(c)) FROM ttt GROUP BY b;
240} {1 2 3}
241
242do_execsql_test 4.3 {
243 SELECT abs(max(b) OVER (ORDER BY b)) FROM ttt GROUP BY b;
244} {1 2 3}
245
dan13078ca2018-06-13 20:29:38 +0000246do_execsql_test 4.4 {
247 SELECT sum(b) OVER (
248 ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
249 ) FROM ttt;
250} {18 17 15 12 11 9 6 5 3}
251
dan9a947222018-06-14 19:06:36 +0000252do_execsql_test 4.5.1.1 {
253 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
254 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
255 FROM ttt ORDER BY a
256} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
257
dan303451a2018-06-14 20:52:08 +0000258do_execsql_test 4.5.1.2 {
259 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
260 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
261 FROM ttt ORDER BY a
262} {1 1 2 2 3 3 3 3 5 5 7 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000263
264do_execsql_test 4.5.2.1 {
265 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
266 min(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
267 FROM ttt ORDER BY a
268} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
269
dan303451a2018-06-14 20:52:08 +0000270do_execsql_test 4.5.2.2 {
271 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
272 sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
273 FROM ttt ORDER BY a
274} {1 1 2 2 3 3 3 2 5 3 7 4 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +0000275
276do_execsql_test 4.5.3.1 {
277 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
278 min(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
279 FROM ttt ORDER BY a
280} {1 1 2 1 3 1 2 1 3 1 4 1 3 1 4 1 5 1}
281
dan303451a2018-06-14 20:52:08 +0000282do_execsql_test 4.5.3.2 {
283 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
284 sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
285 FROM ttt ORDER BY a
286} {1 1 2 3 3 6 3 8 5 11 7 15 6 18 9 22 12 27}
dan9a947222018-06-14 19:06:36 +0000287
288do_execsql_test 4.5.4.1 {
289 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
290 min(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
291 FROM ttt ORDER BY a
292} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
293
dan303451a2018-06-14 20:52:08 +0000294do_execsql_test 4.5.4.2 {
295 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
296 sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
297 FROM ttt ORDER BY a
298} {1 1 2 2 3 3 3 2 5 3 7 4 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +0000299
300do_execsql_test 4.5.5.1 {
301 SELECT max(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
302 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
303 FROM ttt ORDER BY a
304} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
305
dan303451a2018-06-14 20:52:08 +0000306do_execsql_test 4.5.5.2 {
307 SELECT sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
308 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
309 FROM ttt ORDER BY a
310} {1 1 2 2 3 3 2 3 3 5 4 7 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000311
312do_execsql_test 4.5.6.1 {
313 SELECT max(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
314 min(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
315 FROM ttt ORDER BY a
316} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
317
dan303451a2018-06-14 20:52:08 +0000318do_execsql_test 4.5.6.2 {
319 SELECT sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
320 sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
321 FROM ttt ORDER BY a
322} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000323
324do_execsql_test 4.5.7.1 {
325 SELECT max(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
326 min(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
327 FROM ttt ORDER BY a
328} {1 1 2 1 3 1 2 1 3 1 4 1 3 1 4 1 5 1}
329
dan303451a2018-06-14 20:52:08 +0000330do_execsql_test 4.5.7.2 {
331 SELECT sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
332 sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
333 FROM ttt ORDER BY a
334} {1 1 2 3 3 6 2 8 3 11 4 15 3 18 4 22 5 27}
dan9a947222018-06-14 19:06:36 +0000335
336do_execsql_test 4.5.8.1 {
337 SELECT max(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
338 min(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
339 FROM ttt ORDER BY a
340} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
341
dan303451a2018-06-14 20:52:08 +0000342do_execsql_test 4.5.8.2 {
343 SELECT sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
344 sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
345 FROM ttt ORDER BY a
346} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000347
348do_execsql_test 4.5.9.1 {
349 SELECT max(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
350 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
351 FROM ttt ORDER BY a
352} {1 1 2 2 3 3 3 1 3 2 4 3 4 1 4 2 5 3}
353
dan303451a2018-06-14 20:52:08 +0000354do_execsql_test 4.5.9.2 {
355 SELECT sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
356 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
357 FROM ttt ORDER BY a
358} {1 1 3 2 6 3 8 3 11 5 15 7 18 6 22 9 27 12}
dan9a947222018-06-14 19:06:36 +0000359
360do_execsql_test 4.5.10.1 {
361 SELECT max(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
362 min(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
363 FROM ttt ORDER BY a
364} {1 1 2 2 3 3 3 2 3 3 4 4 4 3 4 4 5 5}
365
dan303451a2018-06-14 20:52:08 +0000366do_execsql_test 4.5.10.2 {
367 SELECT sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
368 sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
369 FROM ttt ORDER BY a
370} {1 1 3 2 6 3 8 2 11 3 15 4 18 3 22 4 27 5}
dan9a947222018-06-14 19:06:36 +0000371
372do_execsql_test 4.5.11.1 {
373 SELECT max(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
374 min(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
375 FROM ttt ORDER BY a
376} {1 1 2 1 3 1 3 1 3 1 4 1 4 1 4 1 5 1}
377
dan303451a2018-06-14 20:52:08 +0000378do_execsql_test 4.5.11.2 {
379 SELECT sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
380 sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
381 FROM ttt ORDER BY a
382} {1 1 3 3 6 6 8 8 11 11 15 15 18 18 22 22 27 27}
dan9a947222018-06-14 19:06:36 +0000383
384do_execsql_test 4.5.12.1 {
385 SELECT max(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
386 min(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
387 FROM ttt ORDER BY a
388} {1 1 2 2 3 3 3 2 3 3 4 4 4 3 4 4 5 5}
389
dan303451a2018-06-14 20:52:08 +0000390do_execsql_test 4.5.12.2 {
391 SELECT sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
392 sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
393 FROM ttt ORDER BY a
394} {1 1 3 2 6 3 8 2 11 3 15 4 18 3 22 4 27 5}
dan9a947222018-06-14 19:06:36 +0000395
396do_execsql_test 4.5.13.1 {
397 SELECT max(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
398 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
399 FROM ttt ORDER BY a
400} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
401
dan303451a2018-06-14 20:52:08 +0000402do_execsql_test 4.5.13.2 {
403 SELECT sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
404 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
405 FROM ttt ORDER BY a
406} {1 1 2 2 3 3 2 3 3 5 4 7 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000407
408do_execsql_test 4.5.14.1 {
409 SELECT max(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
410 min(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
411 FROM ttt ORDER BY a
412} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
413
dan303451a2018-06-14 20:52:08 +0000414do_execsql_test 4.5.14.2 {
415 SELECT sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
416 sum(c) OVER (PARTITION BY b, a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
417 FROM ttt ORDER BY a
418} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000419
420do_execsql_test 4.5.15.1 {
421 SELECT max(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
422 min(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
423 FROM ttt ORDER BY a
424} {1 1 2 1 3 1 2 1 3 1 4 1 3 1 4 1 5 1}
425
dan303451a2018-06-14 20:52:08 +0000426do_execsql_test 4.5.15.2 {
427 SELECT sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
428 sum(c) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
429 FROM ttt ORDER BY a
430} {1 1 2 3 3 6 2 8 3 11 4 15 3 18 4 22 5 27}
dan9a947222018-06-14 19:06:36 +0000431
432do_execsql_test 4.5.16.1 {
433 SELECT max(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
434 min(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
435 FROM ttt ORDER BY a
436} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
437
dan303451a2018-06-14 20:52:08 +0000438do_execsql_test 4.5.16.2 {
439 SELECT sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
440 sum(c) OVER (PARTITION BY a ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
441 FROM ttt ORDER BY a
442} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000443
444do_execsql_test 4.5.17.1 {
445 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
446 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
447 FROM ttt ORDER BY a
448} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
449
dan303451a2018-06-14 20:52:08 +0000450do_execsql_test 4.5.17.2 {
451 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
452 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
453 FROM ttt ORDER BY a
454} {1 1 2 2 3 3 3 3 5 5 7 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000455
456do_execsql_test 4.5.18.1 {
457 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
458 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
459 FROM ttt ORDER BY a
460} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
461
dan303451a2018-06-14 20:52:08 +0000462do_execsql_test 4.5.18.2 {
463 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
464 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
465 FROM ttt ORDER BY a
466} {1 6 2 9 3 12 3 6 5 9 7 12 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000467
468do_execsql_test 4.5.19.1 {
469 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
470 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
471 FROM ttt ORDER BY a
472} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
473
dan303451a2018-06-14 20:52:08 +0000474do_execsql_test 4.5.19.2 {
475 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
476 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
477 FROM ttt ORDER BY a
478} {1 1 2 2 3 3 3 2 5 3 7 4 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +0000479
480do_execsql_test 4.5.20.1 {
481 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
482 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
483 FROM ttt ORDER BY a
484} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
485
dan303451a2018-06-14 20:52:08 +0000486do_execsql_test 4.5.20.2 {
487 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
488 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
489 FROM ttt ORDER BY a
490} {1 6 2 9 3 12 3 5 5 7 7 9 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +0000491
492do_execsql_test 4.5.21.1 {
493 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
494 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
495 FROM ttt ORDER BY a
496} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
497
dan303451a2018-06-14 20:52:08 +0000498do_execsql_test 4.5.21.2 {
499 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
500 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
501 FROM ttt ORDER BY a
502} {6 1 9 2 12 3 6 3 9 5 12 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000503
504do_execsql_test 4.5.22.1 {
505 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
506 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
507 FROM ttt ORDER BY a
508} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
509
dan303451a2018-06-14 20:52:08 +0000510do_execsql_test 4.5.22.2 {
511 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
512 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
513 FROM ttt ORDER BY a
514} {6 6 9 9 12 12 6 6 9 9 12 12 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000515
516do_execsql_test 4.5.23.1 {
517 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
518 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
519 FROM ttt ORDER BY a
520} {3 1 4 2 5 3 3 2 4 3 5 4 3 3 4 4 5 5}
521
dan303451a2018-06-14 20:52:08 +0000522do_execsql_test 4.5.23.2 {
523 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
524 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
525 FROM ttt ORDER BY a
526} {6 1 9 2 12 3 6 2 9 3 12 4 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +0000527
528do_execsql_test 4.5.24.1 {
529 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
530 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
531 FROM ttt ORDER BY a
532} {3 1 4 2 5 3 3 2 4 3 5 4 3 3 4 4 5 5}
533
dan303451a2018-06-14 20:52:08 +0000534do_execsql_test 4.5.24.2 {
535 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
536 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
537 FROM ttt ORDER BY a
538} {6 6 9 9 12 12 6 5 9 7 12 9 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +0000539
540do_execsql_test 4.5.25.1 {
541 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
542 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
543 FROM ttt ORDER BY a
544} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
545
dan303451a2018-06-14 20:52:08 +0000546do_execsql_test 4.5.25.2 {
547 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
548 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
549 FROM ttt ORDER BY a
550} {1 1 2 2 3 3 2 3 3 5 4 7 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000551
552do_execsql_test 4.5.26.1 {
553 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
554 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
555 FROM ttt ORDER BY a
556} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
557
dan303451a2018-06-14 20:52:08 +0000558do_execsql_test 4.5.26.2 {
559 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
560 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
561 FROM ttt ORDER BY a
562} {1 6 2 9 3 12 2 6 3 9 4 12 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000563
564do_execsql_test 4.5.27.1 {
565 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
566 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
567 FROM ttt ORDER BY a
568} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
569
dan303451a2018-06-14 20:52:08 +0000570do_execsql_test 4.5.27.2 {
571 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
572 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
573 FROM ttt ORDER BY a
574} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000575
576do_execsql_test 4.5.28.1 {
577 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
578 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
579 FROM ttt ORDER BY a
580} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
581
dan303451a2018-06-14 20:52:08 +0000582do_execsql_test 4.5.28.2 {
583 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW),
584 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
585 FROM ttt ORDER BY a
586} {1 6 2 9 3 12 2 5 3 7 4 9 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000587
588do_execsql_test 4.5.29.1 {
589 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
590 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
591 FROM ttt ORDER BY a
592} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
593
dan303451a2018-06-14 20:52:08 +0000594do_execsql_test 4.5.29.2 {
595 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
596 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
597 FROM ttt ORDER BY a
598} {6 1 9 2 12 3 5 3 7 5 9 7 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000599
600do_execsql_test 4.5.30.1 {
601 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
602 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
603 FROM ttt ORDER BY a
604} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
605
dan303451a2018-06-14 20:52:08 +0000606do_execsql_test 4.5.30.2 {
607 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
608 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
609 FROM ttt ORDER BY a
610} {6 6 9 9 12 12 5 6 7 9 9 12 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000611
612do_execsql_test 4.5.31.1 {
613 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
614 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
615 FROM ttt ORDER BY a
616} {3 1 4 2 5 3 3 2 4 3 5 4 3 3 4 4 5 5}
617
dan303451a2018-06-14 20:52:08 +0000618do_execsql_test 4.5.31.2 {
619 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
620 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND CURRENT ROW)
621 FROM ttt ORDER BY a
622} {6 1 9 2 12 3 5 2 7 3 9 4 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000623
624do_execsql_test 4.5.32.1 {
625 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
626 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
627 FROM ttt ORDER BY a
628} {3 1 4 2 5 3 3 2 4 3 5 4 3 3 4 4 5 5}
629
dan303451a2018-06-14 20:52:08 +0000630do_execsql_test 4.5.32.2 {
631 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
632 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
633 FROM ttt ORDER BY a
634} {6 6 9 9 12 12 5 5 7 7 9 9 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +0000635
636do_execsql_test 4.5.33.1 {
dan303451a2018-06-14 20:52:08 +0000637 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
638 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
dan9a947222018-06-14 19:06:36 +0000639 FROM ttt ORDER BY a
dan303451a2018-06-14 20:52:08 +0000640} {2 1 3 2 4 3 3 1 4 2 5 3 3 1 4 2 5 3}
dan9a947222018-06-14 19:06:36 +0000641
dan303451a2018-06-14 20:52:08 +0000642do_execsql_test 4.5.33.2 {
643 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
644 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
645 FROM ttt ORDER BY a
646} {3 3 5 5 7 7 6 6 9 9 12 12 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000647
648do_execsql_test 4.5.34.1 {
dan303451a2018-06-14 20:52:08 +0000649 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
650 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
dan9a947222018-06-14 19:06:36 +0000651 FROM ttt ORDER BY a
dan303451a2018-06-14 20:52:08 +0000652} {2 1 3 2 4 3 3 1 4 2 5 3 3 1 4 2 5 3}
dan9a947222018-06-14 19:06:36 +0000653
dan303451a2018-06-14 20:52:08 +0000654do_execsql_test 4.5.34.2 {
655 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
656 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
657 FROM ttt ORDER BY a
658} {3 6 5 9 7 12 6 6 9 9 12 12 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000659
660do_execsql_test 4.5.35.1 {
dan303451a2018-06-14 20:52:08 +0000661 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
662 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
dan9a947222018-06-14 19:06:36 +0000663 FROM ttt ORDER BY a
dan303451a2018-06-14 20:52:08 +0000664} {2 {} 3 {} 4 {} 3 1 4 2 5 3 3 2 4 3 5 4}
dan9a947222018-06-14 19:06:36 +0000665
dan303451a2018-06-14 20:52:08 +0000666do_execsql_test 4.5.35.2 {
667 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
668 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
669 FROM ttt ORDER BY a
670} {3 {} 5 {} 7 {} 6 1 9 2 12 3 6 2 9 3 12 4}
dan9a947222018-06-14 19:06:36 +0000671
672do_execsql_test 4.5.36.1 {
dan303451a2018-06-14 20:52:08 +0000673 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
674 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
675 FROM ttt ORDER BY a
676} {2 {} 3 {} 4 {} 3 {} 4 {} 5 {} 3 {} 4 {} 5 {}}
677
678do_execsql_test 4.5.36.2 {
679 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
680 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
681 FROM ttt ORDER BY a
682} {3 {} 5 {} 7 {} 6 {} 9 {} 12 {} 6 {} 9 {} 12 {}}
683
684do_execsql_test 4.5.37.1 {
685 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
686 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
687 FROM ttt ORDER BY a
688} {2 2 3 3 4 4 3 3 4 4 5 5 3 {} 4 {} 5 {}}
689
690do_execsql_test 4.5.37.2 {
691 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING),
692 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
693 FROM ttt ORDER BY a
694} {3 5 5 7 7 9 6 3 9 4 12 5 6 {} 9 {} 12 {}}
695
696do_execsql_test 4.5.38.1 {
697 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
698 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
699 FROM ttt ORDER BY a
700} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
701
702do_execsql_test 4.5.38.2 {
703 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
704 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
705 FROM ttt ORDER BY a
706} {6 3 9 5 12 7 6 6 9 9 12 12 6 6 9 9 12 12}
707
708do_execsql_test 4.5.39.1 {
709 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
710 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
711 FROM ttt ORDER BY a
712} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
713
714do_execsql_test 4.5.39.2 {
715 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
716 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
717 FROM ttt ORDER BY a
718} {6 6 9 9 12 12 6 6 9 9 12 12 6 6 9 9 12 12}
719
720do_execsql_test 4.5.40.1 {
721 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
722 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
723 FROM ttt ORDER BY a
724} {3 {} 4 {} 5 {} 3 1 4 2 5 3 3 2 4 3 5 4}
725
726do_execsql_test 4.5.40.2 {
727 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
728 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
729 FROM ttt ORDER BY a
730} {6 {} 9 {} 12 {} 6 1 9 2 12 3 6 2 9 3 12 4}
731
732do_execsql_test 4.5.41.1 {
733 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
734 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
735 FROM ttt ORDER BY a
736} {3 {} 4 {} 5 {} 3 {} 4 {} 5 {} 3 {} 4 {} 5 {}}
737
738do_execsql_test 4.5.41.2 {
739 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
740 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
741 FROM ttt ORDER BY a
742} {6 {} 9 {} 12 {} 6 {} 9 {} 12 {} 6 {} 9 {} 12 {}}
743
744do_execsql_test 4.5.42.1 {
745 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
746 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
747 FROM ttt ORDER BY a
748} {3 2 4 3 5 4 3 3 4 4 5 5 3 {} 4 {} 5 {}}
749
750do_execsql_test 4.5.42.2 {
751 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING),
752 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
753 FROM ttt ORDER BY a
754} {6 5 9 7 12 9 6 3 9 4 12 5 6 {} 9 {} 12 {}}
755
756do_execsql_test 4.5.43.1 {
757 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
758 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
759 FROM ttt ORDER BY a
760} {{} 1 {} 2 {} 3 1 1 2 2 3 3 2 1 3 2 4 3}
761
762do_execsql_test 4.5.43.2 {
763 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
764 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
765 FROM ttt ORDER BY a
766} {{} 3 {} 5 {} 7 1 6 2 9 3 12 2 6 3 9 4 12}
767
768do_execsql_test 4.5.44.1 {
769 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
770 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
771 FROM ttt ORDER BY a
772} {{} 1 {} 2 {} 3 1 1 2 2 3 3 2 1 3 2 4 3}
773
774do_execsql_test 4.5.44.2 {
775 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
776 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
777 FROM ttt ORDER BY a
778} {{} 6 {} 9 {} 12 1 6 2 9 3 12 2 6 3 9 4 12}
779
780do_execsql_test 4.5.45.1 {
781 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
782 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
783 FROM ttt ORDER BY a
784} {{} {} {} {} {} {} 1 1 2 2 3 3 2 2 3 3 4 4}
785
786do_execsql_test 4.5.45.2 {
787 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
788 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
789 FROM ttt ORDER BY a
790} {{} {} {} {} {} {} 1 1 2 2 3 3 2 2 3 3 4 4}
791
792do_execsql_test 4.5.46.1 {
793 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
794 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
795 FROM ttt ORDER BY a
796} {{} {} {} {} {} {} 1 {} 2 {} 3 {} 2 {} 3 {} 4 {}}
797
798do_execsql_test 4.5.46.2 {
799 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
800 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
801 FROM ttt ORDER BY a
802} {{} {} {} {} {} {} 1 {} 2 {} 3 {} 2 {} 3 {} 4 {}}
803
804do_execsql_test 4.5.47.1 {
805 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
806 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
807 FROM ttt ORDER BY a
808} {{} 2 {} 3 {} 4 1 3 2 4 3 5 2 {} 3 {} 4 {}}
809
810do_execsql_test 4.5.47.2 {
811 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING),
812 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
813 FROM ttt ORDER BY a
814} {{} 5 {} 7 {} 9 1 3 2 4 3 5 2 {} 3 {} 4 {}}
815
816do_execsql_test 4.5.48.1 {
817 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
818 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
819 FROM ttt ORDER BY a
820} {{} 1 {} 2 {} 3 {} 1 {} 2 {} 3 {} 1 {} 2 {} 3}
821
822do_execsql_test 4.5.48.2 {
823 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
824 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
825 FROM ttt ORDER BY a
826} {{} 3 {} 5 {} 7 {} 6 {} 9 {} 12 {} 6 {} 9 {} 12}
827
828do_execsql_test 4.5.49.1 {
829 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
830 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
831 FROM ttt ORDER BY a
832} {{} 1 {} 2 {} 3 {} 1 {} 2 {} 3 {} 1 {} 2 {} 3}
833
834do_execsql_test 4.5.49.2 {
835 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
836 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
837 FROM ttt ORDER BY a
838} {{} 6 {} 9 {} 12 {} 6 {} 9 {} 12 {} 6 {} 9 {} 12}
839
840do_execsql_test 4.5.50.1 {
841 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
842 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
843 FROM ttt ORDER BY a
844} {{} {} {} {} {} {} {} 1 {} 2 {} 3 {} 2 {} 3 {} 4}
845
846do_execsql_test 4.5.50.2 {
847 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
848 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
849 FROM ttt ORDER BY a
850} {{} {} {} {} {} {} {} 1 {} 2 {} 3 {} 2 {} 3 {} 4}
851
852do_execsql_test 4.5.51.1 {
853 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
854 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
855 FROM ttt ORDER BY a
856} {{} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}}
857
858do_execsql_test 4.5.51.2 {
859 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
860 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
861 FROM ttt ORDER BY a
862} {{} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}}
863
864do_execsql_test 4.5.52.1 {
865 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
866 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
867 FROM ttt ORDER BY a
868} {{} 2 {} 3 {} 4 {} 3 {} 4 {} 5 {} {} {} {} {} {}}
869
870do_execsql_test 4.5.52.2 {
871 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING),
872 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
873 FROM ttt ORDER BY a
874} {{} 5 {} 7 {} 9 {} 3 {} 4 {} 5 {} {} {} {} {} {}}
875
876do_execsql_test 4.5.53.1 {
877 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
878 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
879 FROM ttt ORDER BY a
880} {3 1 4 2 5 3 3 1 4 2 5 3 {} 1 {} 2 {} 3}
881
882do_execsql_test 4.5.53.2 {
883 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
884 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING)
885 FROM ttt ORDER BY a
886} {5 3 7 5 9 7 3 6 4 9 5 12 {} 6 {} 9 {} 12}
887
888do_execsql_test 4.5.54.1 {
889 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
890 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
891 FROM ttt ORDER BY a
892} {3 1 4 2 5 3 3 1 4 2 5 3 {} 1 {} 2 {} 3}
893
894do_execsql_test 4.5.54.2 {
895 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
896 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING)
897 FROM ttt ORDER BY a
898} {5 6 7 9 9 12 3 6 4 9 5 12 {} 6 {} 9 {} 12}
899
900do_execsql_test 4.5.55.1 {
901 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
902 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
903 FROM ttt ORDER BY a
904} {3 {} 4 {} 5 {} 3 1 4 2 5 3 {} 2 {} 3 {} 4}
905
906do_execsql_test 4.5.55.2 {
907 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
908 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
909 FROM ttt ORDER BY a
910} {5 {} 7 {} 9 {} 3 1 4 2 5 3 {} 2 {} 3 {} 4}
911
912do_execsql_test 4.5.56.1 {
913 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
914 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
915 FROM ttt ORDER BY a
916} {3 {} 4 {} 5 {} 3 {} 4 {} 5 {} {} {} {} {} {} {}}
917
918do_execsql_test 4.5.56.2 {
919 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
920 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING)
921 FROM ttt ORDER BY a
922} {5 {} 7 {} 9 {} 3 {} 4 {} 5 {} {} {} {} {} {} {}}
923
924do_execsql_test 4.5.57.1 {
925 SELECT max(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
926 min(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
927 FROM ttt ORDER BY a
928} {3 2 4 3 5 4 3 3 4 4 5 5 {} {} {} {} {} {}}
929
930do_execsql_test 4.5.57.2 {
931 SELECT sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING),
932 sum(c) OVER (PARTITION BY b ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING)
933 FROM ttt ORDER BY a
934} {5 5 7 7 9 9 3 3 4 4 5 5 {} {} {} {} {} {}}
935
936do_execsql_test 4.5.58.1 {
937 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
938 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
939 FROM ttt ORDER BY a
940} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
941
942do_execsql_test 4.5.58.2 {
943 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
944 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
945 FROM ttt ORDER BY a
946} {1 1 2 2 3 3 3 3 5 5 7 7 6 6 9 9 12 12}
947
948do_execsql_test 4.5.59.1 {
949 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
950 min(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
951 FROM ttt ORDER BY a
952} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
953
954do_execsql_test 4.5.59.2 {
955 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
956 sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
957 FROM ttt ORDER BY a
958} {1 6 2 9 3 12 3 5 5 7 7 9 6 3 9 4 12 5}
959
960do_execsql_test 4.5.60.1 {
961 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
962 min(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
963 FROM ttt ORDER BY a
964} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
965
966do_execsql_test 4.5.60.2 {
967 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
968 sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
969 FROM ttt ORDER BY a
970} {1 6 2 9 3 12 3 6 5 9 7 12 6 6 9 9 12 12}
971
972do_execsql_test 4.5.61.1 {
dan9a947222018-06-14 19:06:36 +0000973 SELECT max(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
974 min(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
975 FROM ttt ORDER BY a
976} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
977
dan303451a2018-06-14 20:52:08 +0000978do_execsql_test 4.5.61.2 {
979 SELECT sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
980 sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
981 FROM ttt ORDER BY a
982} {1 1 2 2 3 3 3 3 5 5 7 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +0000983
dan303451a2018-06-14 20:52:08 +0000984do_execsql_test 4.5.62.1 {
dan9a947222018-06-14 19:06:36 +0000985 SELECT max(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
986 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
987 FROM ttt ORDER BY a
988} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
989
dan303451a2018-06-14 20:52:08 +0000990do_execsql_test 4.5.62.2 {
991 SELECT sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
992 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
993 FROM ttt ORDER BY a
994} {6 1 9 2 12 3 5 3 7 5 9 7 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +0000995
dan303451a2018-06-14 20:52:08 +0000996do_execsql_test 4.5.63.1 {
dan9a947222018-06-14 19:06:36 +0000997 SELECT max(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
998 min(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
999 FROM ttt ORDER BY a
1000} {3 1 4 2 5 3 3 2 4 3 5 4 3 3 4 4 5 5}
1001
dan303451a2018-06-14 20:52:08 +00001002do_execsql_test 4.5.63.2 {
1003 SELECT sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1004 sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1005 FROM ttt ORDER BY a
1006} {6 6 9 9 12 12 5 5 7 7 9 9 3 3 4 4 5 5}
dan9a947222018-06-14 19:06:36 +00001007
dan303451a2018-06-14 20:52:08 +00001008do_execsql_test 4.5.64.1 {
dan9a947222018-06-14 19:06:36 +00001009 SELECT max(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1010 min(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1011 FROM ttt ORDER BY a
1012} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
1013
dan303451a2018-06-14 20:52:08 +00001014do_execsql_test 4.5.64.2 {
1015 SELECT sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1016 sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1017 FROM ttt ORDER BY a
1018} {6 6 9 9 12 12 5 6 7 9 9 12 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +00001019
dan303451a2018-06-14 20:52:08 +00001020do_execsql_test 4.5.65.1 {
dan9a947222018-06-14 19:06:36 +00001021 SELECT max(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1022 min(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1023 FROM ttt ORDER BY a
1024} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
1025
dan303451a2018-06-14 20:52:08 +00001026do_execsql_test 4.5.65.2 {
1027 SELECT sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1028 sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1029 FROM ttt ORDER BY a
1030} {6 1 9 2 12 3 5 3 7 5 9 7 3 6 4 9 5 12}
dan9a947222018-06-14 19:06:36 +00001031
dan303451a2018-06-14 20:52:08 +00001032do_execsql_test 4.5.66.1 {
dan9a947222018-06-14 19:06:36 +00001033 SELECT max(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1034 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1035 FROM ttt ORDER BY a
1036} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
1037
dan303451a2018-06-14 20:52:08 +00001038do_execsql_test 4.5.66.2 {
1039 SELECT sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1040 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1041 FROM ttt ORDER BY a
1042} {6 1 9 2 12 3 6 3 9 5 12 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +00001043
dan303451a2018-06-14 20:52:08 +00001044do_execsql_test 4.5.67.1 {
dan9a947222018-06-14 19:06:36 +00001045 SELECT max(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1046 min(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1047 FROM ttt ORDER BY a
1048} {3 1 4 2 5 3 3 2 4 3 5 4 3 3 4 4 5 5}
1049
dan303451a2018-06-14 20:52:08 +00001050do_execsql_test 4.5.67.2 {
1051 SELECT sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1052 sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1053 FROM ttt ORDER BY a
1054} {6 6 9 9 12 12 6 5 9 7 12 9 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +00001055
dan303451a2018-06-14 20:52:08 +00001056do_execsql_test 4.5.68.1 {
dan9a947222018-06-14 19:06:36 +00001057 SELECT max(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1058 min(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1059 FROM ttt ORDER BY a
1060} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
1061
dan303451a2018-06-14 20:52:08 +00001062do_execsql_test 4.5.68.2 {
1063 SELECT sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1064 sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1065 FROM ttt ORDER BY a
1066} {6 6 9 9 12 12 6 6 9 9 12 12 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +00001067
dan303451a2018-06-14 20:52:08 +00001068do_execsql_test 4.5.69.1 {
dan9a947222018-06-14 19:06:36 +00001069 SELECT max(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1070 min(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1071 FROM ttt ORDER BY a
1072} {3 1 4 2 5 3 3 1 4 2 5 3 3 1 4 2 5 3}
1073
dan303451a2018-06-14 20:52:08 +00001074do_execsql_test 4.5.69.2 {
1075 SELECT sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1076 sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1077 FROM ttt ORDER BY a
1078} {6 1 9 2 12 3 6 3 9 5 12 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +00001079
dan303451a2018-06-14 20:52:08 +00001080do_execsql_test 4.5.70.1 {
dan9a947222018-06-14 19:06:36 +00001081 SELECT max(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1082 min(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1083 FROM ttt ORDER BY a
1084} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
1085
dan303451a2018-06-14 20:52:08 +00001086do_execsql_test 4.5.70.2 {
1087 SELECT sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1088 sum(c) OVER (PARTITION BY b ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1089 FROM ttt ORDER BY a
1090} {1 1 2 2 3 3 3 3 5 5 7 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +00001091
dan303451a2018-06-14 20:52:08 +00001092do_execsql_test 4.5.71.1 {
dan9a947222018-06-14 19:06:36 +00001093 SELECT max(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1094 min(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1095 FROM ttt ORDER BY a
1096} {1 1 2 2 3 3 2 2 3 3 4 4 3 3 4 4 5 5}
1097
dan303451a2018-06-14 20:52:08 +00001098do_execsql_test 4.5.71.2 {
1099 SELECT sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1100 sum(c) OVER (PARTITION BY b ORDER BY a DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1101 FROM ttt ORDER BY a
1102} {1 6 2 9 3 12 3 5 5 7 7 9 6 3 9 4 12 5}
dan9a947222018-06-14 19:06:36 +00001103
dan303451a2018-06-14 20:52:08 +00001104do_execsql_test 4.5.72.1 {
dan9a947222018-06-14 19:06:36 +00001105 SELECT max(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1106 min(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1107 FROM ttt ORDER BY a
1108} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
1109
dan303451a2018-06-14 20:52:08 +00001110do_execsql_test 4.5.72.2 {
1111 SELECT sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1112 sum(c) OVER (PARTITION BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1113 FROM ttt ORDER BY a
1114} {1 6 2 9 3 12 3 6 5 9 7 12 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +00001115
dan303451a2018-06-14 20:52:08 +00001116do_execsql_test 4.5.73.1 {
dan9a947222018-06-14 19:06:36 +00001117 SELECT max(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1118 min(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1119 FROM ttt ORDER BY a
1120} {1 1 2 2 3 3 2 1 3 2 4 3 3 1 4 2 5 3}
1121
dan303451a2018-06-14 20:52:08 +00001122do_execsql_test 4.5.73.2 {
1123 SELECT sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
1124 sum(c) OVER (PARTITION BY b ORDER BY b, a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
1125 FROM ttt ORDER BY a
1126} {1 1 2 2 3 3 3 3 5 5 7 7 6 6 9 9 12 12}
dan9a947222018-06-14 19:06:36 +00001127
dane0a5e202018-06-15 16:10:44 +00001128#==========================================================================
1129
1130do_execsql_test 7.0 {
1131 DROP TABLE IF EXISTS t1;
1132 CREATE TABLE t1(x INTEGER, y INTEGER);
1133 INSERT INTO t1 VALUES(1, 2);
1134 INSERT INTO t1 VALUES(3, 4);
1135 INSERT INTO t1 VALUES(5, 6);
1136 INSERT INTO t1 VALUES(7, 8);
1137 INSERT INTO t1 VALUES(9, 10);
1138} {}
1139
1140do_execsql_test 7.1 {
1141 SELECT lead(y) OVER win FROM t1
1142 WINDOW win AS (ORDER BY x)
1143} {4 6 8 10 {}}
1144
1145do_execsql_test 7.2 {
1146 SELECT lead(y, 2) OVER win FROM t1
1147 WINDOW win AS (ORDER BY x)
1148} {6 8 10 {} {}}
1149
1150do_execsql_test 7.3 {
1151 SELECT lead(y, 3, -1) OVER win FROM t1
1152 WINDOW win AS (ORDER BY x)
1153} {8 10 -1 -1 -1}
1154
1155do_execsql_test 7.4 {
1156 SELECT
1157 lead(y) OVER win, lead(y) OVER win
1158 FROM t1
1159 WINDOW win AS (ORDER BY x)
1160} {4 4 6 6 8 8 10 10 {} {}}
1161
1162do_execsql_test 7.5 {
1163 SELECT
1164 lead(y) OVER win,
1165 lead(y, 2) OVER win,
1166 lead(y, 3, -1) OVER win
1167 FROM t1
1168 WINDOW win AS (ORDER BY x)
1169} {4 6 8 6 8 10 8 10 -1 10 {} -1 {} {} -1}
1170
dan6fde1792018-06-15 19:01:35 +00001171#==========================================================================
1172
1173do_execsql_test 8.0 {
1174 DROP TABLE IF EXISTS t1;
1175 CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER, d INTEGER);
1176 INSERT INTO t1 VALUES(1, 2, 3, 4);
1177 INSERT INTO t1 VALUES(5, 6, 7, 8);
1178 INSERT INTO t1 VALUES(9, 10, 11, 12);
1179} {}
1180
1181do_execsql_test 8.1 {
1182 SELECT row_number() OVER win,
1183 nth_value(d,2) OVER win,
1184 lead(d) OVER win
1185 FROM t1
1186 WINDOW win AS (ORDER BY a)
1187} {1 {} 8 2 8 12 3 8 {}}
1188
1189do_execsql_test 8.2 {
1190 SELECT row_number() OVER win,
1191 rank() OVER win,
1192 dense_rank() OVER win,
1193 ntile(2) OVER win,
1194 first_value(d) OVER win,
1195 last_value(d) OVER win,
1196 nth_value(d,2) OVER win,
1197 lead(d) OVER win,
1198 lag(d) OVER win,
1199 max(d) OVER win,
1200 min(d) OVER win
1201 FROM t1
1202 WINDOW win AS (ORDER BY a)
1203} {1 1 1 1 4 4 {} 8 {} 4 4 2 2 2 1 4 8 8 12 4 8 4 3 3 3 2 4 12 8 {} 8 12 4}
1204
danb7306f62018-06-21 19:20:39 +00001205#==========================================================================
1206
1207do_execsql_test 9.0 {
1208 DROP TABLE IF EXISTS t2;
1209 CREATE TABLE t2(x INTEGER);
1210 INSERT INTO t2 VALUES(1), (1), (1), (4), (4), (6), (7);
1211} {}
1212
1213do_execsql_test 9.1 {
1214 SELECT rank() OVER () FROM t2
1215} {1 1 1 1 1 1 1}
1216
1217do_execsql_test 9.2 {
1218 SELECT dense_rank() OVER (PARTITION BY x) FROM t2
1219} {1 1 1 1 1 1 1}
1220
dan2fae1502018-09-24 14:51:59 +00001221
danb7306f62018-06-21 19:20:39 +00001222do_test 9.3 {
1223 set myres {}
1224 foreach r [db eval {SELECT x, percent_rank() OVER (PARTITION BY x ORDER BY x) FROM t2}] {
dan2fae1502018-09-24 14:51:59 +00001225 lappend myres [format %.4f [set r]]
danb7306f62018-06-21 19:20:39 +00001226 }
dan2fae1502018-09-24 14:51:59 +00001227 set res2 {1.0000 0.0000 1.0000 0.0000 1.0000 0.0000 4.0000 0.0000 4.0000 0.0000 6.0000 0.0000 7.0000 0.0000}
dan6c75b392019-03-08 20:02:52 +00001228 set i 0
dan2fae1502018-09-24 14:51:59 +00001229 foreach r [set myres] r2 [set res2] {
1230 if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} {
1231 error "list element [set i] does not match: got=[set r] expected=[set r2]"
1232 }
dan6c75b392019-03-08 20:02:52 +00001233 incr i
dan2fae1502018-09-24 14:51:59 +00001234 }
1235 set {} {}
1236} {}
danb7306f62018-06-21 19:20:39 +00001237
dan867be212018-06-25 11:42:08 +00001238do_execsql_test 9.4 {
1239 SELECT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
1240} {1 1 1 1 1 1 4 4 4 4 6 6 7 7}
1241
1242do_execsql_test 9.5 {
1243 SELECT DISTINCT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
1244} {1 1 4 4 6 6 7 7}
1245
dan2fae1502018-09-24 14:51:59 +00001246
dancf0343b2018-07-06 13:25:02 +00001247do_test 9.6 {
1248 set myres {}
1249 foreach r [db eval {SELECT percent_rank() OVER () FROM t1}] {
dan2fae1502018-09-24 14:51:59 +00001250 lappend myres [format %.4f [set r]]
dancf0343b2018-07-06 13:25:02 +00001251 }
dan2fae1502018-09-24 14:51:59 +00001252 set res2 {0.0000 0.0000 0.0000}
dan6c75b392019-03-08 20:02:52 +00001253 set i 0
dan2fae1502018-09-24 14:51:59 +00001254 foreach r [set myres] r2 [set res2] {
1255 if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} {
1256 error "list element [set i] does not match: got=[set r] expected=[set r2]"
1257 }
dan6c75b392019-03-08 20:02:52 +00001258 incr i
dan2fae1502018-09-24 14:51:59 +00001259 }
1260 set {} {}
1261} {}
1262
dancf0343b2018-07-06 13:25:02 +00001263
1264do_test 9.7 {
1265 set myres {}
1266 foreach r [db eval {SELECT cume_dist() OVER () FROM t1}] {
dan2fae1502018-09-24 14:51:59 +00001267 lappend myres [format %.4f [set r]]
dancf0343b2018-07-06 13:25:02 +00001268 }
dan2fae1502018-09-24 14:51:59 +00001269 set res2 {1.0000 1.0000 1.0000}
dan6c75b392019-03-08 20:02:52 +00001270 set i 0
dan2fae1502018-09-24 14:51:59 +00001271 foreach r [set myres] r2 [set res2] {
1272 if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} {
1273 error "list element [set i] does not match: got=[set r] expected=[set r2]"
1274 }
dan6c75b392019-03-08 20:02:52 +00001275 incr i
dan2fae1502018-09-24 14:51:59 +00001276 }
1277 set {} {}
1278} {}
dancf0343b2018-07-06 13:25:02 +00001279
dand4fc49f2018-07-07 17:30:44 +00001280do_execsql_test 10.0 {
1281 DROP TABLE IF EXISTS t7;
1282 CREATE TABLE t7(id INTEGER PRIMARY KEY, a INTEGER, b INTEGER);
1283 INSERT INTO t7(id, a, b) VALUES
1284 (1, 1, 2), (2, 1, NULL), (3, 1, 4),
1285 (4, 3, NULL), (5, 3, 8), (6, 3, 1);
1286} {}
1287
1288do_execsql_test 10.1 {
1289 SELECT id, min(b) OVER (PARTITION BY a ORDER BY id) FROM t7;
1290} {1 2 2 2 3 2 4 {} 5 8 6 1}
1291
dana1a7e112018-07-09 13:31:18 +00001292do_execsql_test 10.2 {
1293 SELECT id, lead(b, -1) OVER (PARTITION BY a ORDER BY id) FROM t7;
1294} {1 {} 2 2 3 {} 4 {} 5 {} 6 8}
1295
1296do_execsql_test 10.3 {
1297 SELECT id, lag(b, -1) OVER (PARTITION BY a ORDER BY id) FROM t7;
1298} {1 {} 2 4 3 {} 4 8 5 1 6 {}}
1299
dan2fae1502018-09-24 14:51:59 +00001300do_execsql_test 11.0 {
1301 DROP VIEW IF EXISTS v8;
1302 DROP TABLE IF EXISTS t8;
1303 CREATE TABLE t8(t INT, total INT);
1304 INSERT INTO t8 VALUES(0,2);
1305 INSERT INTO t8 VALUES(5,1);
1306 INSERT INTO t8 VALUES(10,1);
1307} {}
1308
1309do_execsql_test 11.1 {
1310 SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8;
1311} {0 1 2}
1312
1313do_execsql_test 11.2 {
1314 CREATE VIEW v8 AS SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8;
1315} {}
1316
1317do_execsql_test 11.3 {
1318 SELECT * FROM v8;
1319} {0 1 2}
1320
1321do_execsql_test 11.4 {
1322 SELECT * FROM (
1323 SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8
1324 ) sub;
1325} {0 1 2}
1326
dan553948e2020-03-16 18:52:53 +00001327do_execsql_test 11.5 {
1328 SELECT sum( min(t) ) OVER () FROM t8 GROUP BY total;
1329} {5 5}
1330
1331do_execsql_test 11.5 {
1332 SELECT sum( max(t) ) OVER () FROM t8 GROUP BY total;
1333} {10 10}
1334
1335do_execsql_test 11.7 {
1336 SELECT sum( min(t) ) OVER () FROM t8;
1337} {0}
1338
1339do_execsql_test 11.8 {
1340 SELECT sum( max(t) ) OVER () FROM t8;
1341} {10}
1342
danb6299682019-08-10 14:35:06 +00001343do_execsql_test 12.0 {
1344 DROP TABLE IF EXISTS t2;
1345 CREATE TABLE t2(a INTEGER);
1346 INSERT INTO t2 VALUES(1), (2), (3);
1347} {}
1348
1349do_execsql_test 12.1 {
1350 SELECT (SELECT min(a) OVER ()) FROM t2
1351} {1 2 3}
1352
1353
1354do_test 12.2 {
1355 set myres {}
1356 foreach r [db eval {SELECT (SELECT avg(a)) FROM t2 ORDER BY 1}] {
1357 lappend myres [format %.4f [set r]]
1358 }
1359 set res2 {2.0000}
1360 set i 0
1361 foreach r [set myres] r2 [set res2] {
1362 if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} {
1363 error "list element [set i] does not match: got=[set r] expected=[set r2]"
1364 }
1365 incr i
1366 }
1367 set {} {}
1368} {}
1369
1370
1371do_test 12.3 {
1372 set myres {}
1373 foreach r [db eval {SELECT
1374 (SELECT avg(a) UNION SELECT min(a) OVER ())
1375 FROM t2 GROUP BY a
1376 ORDER BY 1}] {
1377 lappend myres [format %.4f [set r]]
1378 }
1379 set res2 {1.0000 2.0000 3.0000}
1380 set i 0
1381 foreach r [set myres] r2 [set res2] {
1382 if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} {
1383 error "list element [set i] does not match: got=[set r] expected=[set r2]"
1384 }
1385 incr i
1386 }
1387 set {} {}
1388} {}
1389
dan6bc5c9e2018-06-04 18:55:11 +00001390finish_test