xref: /sqlite-3.40.0/test/window2.test (revision 09590aaa)
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
18set testdir [file dirname $argv0]
19source $testdir/tester.tcl
20set testprefix window2
21
22do_execsql_test 1.0 {
23  DROP TABLE IF EXISTS t1;
24  CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c TEXT, d INTEGER);
25  INSERT INTO t1 VALUES(1, 'odd',  'one',   1);
26  INSERT INTO t1 VALUES(2, 'even', 'two',   2);
27  INSERT INTO t1 VALUES(3, 'odd',  'three', 3);
28  INSERT INTO t1 VALUES(4, 'even', 'four',  4);
29  INSERT INTO t1 VALUES(5, 'odd',  'five',  5);
30  INSERT INTO t1 VALUES(6, 'even', 'six',   6);
31} {}
32
33do_execsql_test 1.1 {
34  SELECT c, sum(d) OVER (PARTITION BY b ORDER BY c) FROM t1;
35} {four 4   six 10   two 12   five 5   one 6   three 9}
36
37do_execsql_test 1.2 {
38  SELECT sum(d) OVER () FROM t1;
39} {21   21   21   21   21   21}
40
41do_execsql_test 1.3 {
42  SELECT sum(d) OVER (PARTITION BY b) FROM t1;
43} {12   12   12   9   9   9}
44
45#==========================================================================
46
47do_execsql_test 2.1 {
48  SELECT a, sum(d) OVER (
49    ORDER BY d
50    ROWS BETWEEN 1000 PRECEDING AND 1 FOLLOWING
51  ) FROM t1
52} {1 3   2 6   3 10   4 15   5 21   6 21}
53
54do_execsql_test 2.2 {
55  SELECT a, sum(d) OVER (
56    ORDER BY d
57    ROWS BETWEEN 1000 PRECEDING AND 1000 FOLLOWING
58  ) FROM t1
59} {1 21   2 21   3 21   4 21   5 21   6 21}
60
61do_execsql_test 2.3 {
62  SELECT a, sum(d) OVER (
63    ORDER BY d
64    ROWS BETWEEN 1 PRECEDING AND 1000 FOLLOWING
65  ) FROM t1
66} {1 21   2 21   3 20   4 18   5 15   6 11}
67
68do_execsql_test 2.4 {
69  SELECT a, sum(d) OVER (
70    ORDER BY d
71    ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
72  ) FROM t1
73} {1 3   2 6   3 9   4 12   5 15   6 11}
74
75do_execsql_test 2.5 {
76  SELECT a, sum(d) OVER (
77    ORDER BY d
78    ROWS BETWEEN 1 PRECEDING AND 0 FOLLOWING
79  ) FROM t1
80} {1 1   2 3   3 5   4 7   5 9   6 11}
81
82do_execsql_test 2.6 {
83  SELECT a, sum(d) OVER (
84    PARTITION BY b
85    ORDER BY d
86    ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
87  ) FROM t1
88} {2 6   4 12   6 10   1 4   3 9   5 8}
89
90do_execsql_test 2.7 {
91  SELECT a, sum(d) OVER (
92    PARTITION BY b
93    ORDER BY d
94    ROWS BETWEEN 0 PRECEDING AND 0 FOLLOWING
95  ) FROM t1
96} {2 2   4 4   6 6   1 1   3 3   5 5}
97
98do_execsql_test 2.8 {
99  SELECT a, sum(d) OVER (
100    ORDER BY d
101    ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING
102  ) FROM t1
103} {1 6   2 9   3 12   4 15   5 11   6 6}
104
105do_execsql_test 2.9 {
106  SELECT a, sum(d) OVER (
107    ORDER BY d
108    ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING
109  ) FROM t1
110} {1 6   2 10   3 15   4 21   5 21   6 21}
111
112do_execsql_test 2.10 {
113  SELECT a, sum(d) OVER (
114    ORDER BY d
115    ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING
116  ) FROM t1
117} {1 6   2 9   3 12   4 15   5 11   6 6}
118
119do_execsql_test 2.11 {
120  SELECT a, sum(d) OVER (
121    ORDER BY d
122    ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
123  ) FROM t1
124} {1 1   2 3   3 6   4 9   5 12   6 15}
125
126do_execsql_test 2.13 {
127  SELECT a, sum(d) OVER (
128    ORDER BY d
129    ROWS BETWEEN 2 PRECEDING AND UNBOUNDED FOLLOWING
130  ) FROM t1
131} {1 21   2 21   3 21   4 20   5 18   6 15}
132
133do_execsql_test 2.14 {
134  SELECT a, sum(d) OVER (
135    ORDER BY d
136    ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING
137  ) FROM t1
138} {1 {}   2 1   3 3   4 6   5 9   6 12}
139
140do_execsql_test 2.15 {
141  SELECT a, sum(d) OVER (
142    PARTITION BY b
143    ORDER BY d
144    ROWS BETWEEN 1 PRECEDING AND 0 PRECEDING
145  ) FROM t1
146} {2 2   4 6   6 10   1 1   3 4   5 8}
147
148do_execsql_test 2.16 {
149  SELECT a, sum(d) OVER (
150    PARTITION BY b
151    ORDER BY d
152    ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING
153  ) FROM t1
154} {2 {}   4 2   6 4   1 {}   3 1   5 3}
155
156do_execsql_test 2.17 {
157  SELECT a, sum(d) OVER (
158    PARTITION BY b
159    ORDER BY d
160    ROWS BETWEEN 1 PRECEDING AND 2 PRECEDING
161  ) FROM t1
162} {2 {}   4 {}   6 {}   1 {}   3 {}   5 {}}
163
164do_execsql_test 2.18 {
165  SELECT a, sum(d) OVER (
166    PARTITION BY b
167    ORDER BY d
168    ROWS BETWEEN UNBOUNDED PRECEDING AND 2 PRECEDING
169  ) FROM t1
170} {2 {}   4 {}   6 2   1 {}   3 {}   5 1}
171
172do_execsql_test 2.19 {
173  SELECT a, sum(d) OVER (
174    PARTITION BY b
175    ORDER BY d
176    ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING
177  ) FROM t1
178} {2 10   4 6   6 {}   1 8   3 5   5 {}}
179
180do_execsql_test 2.20 {
181  SELECT a, sum(d) OVER (
182    ORDER BY d
183    ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING
184  ) FROM t1
185} {1 5   2 7   3 9   4 11   5 6   6 {}}
186
187do_execsql_test 2.21 {
188  SELECT a, sum(d) OVER (
189    ORDER BY d
190    ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING
191  ) FROM t1
192} {1 20   2 18   3 15   4 11   5 6   6 {}}
193
194do_execsql_test 2.22 {
195  SELECT a, sum(d) OVER (
196    PARTITION BY b
197    ORDER BY d
198    ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING
199  ) FROM t1
200} {2 10   4 6   6 {}   1 8   3 5   5 {}}
201
202do_execsql_test 2.23 {
203  SELECT a, sum(d) OVER (
204    ORDER BY d
205    ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
206  ) FROM t1
207} {1 21   2 20   3 18   4 15   5 11   6 6}
208
209do_execsql_test 2.24 {
210  SELECT a, sum(d) OVER (
211    PARTITION BY a%2
212    ORDER BY d
213    ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
214  ) FROM t1
215} {2 12   4 10   6 6   1 9   3 8   5 5}
216
217do_execsql_test 2.25 {
218  SELECT a, sum(d) OVER (
219    ORDER BY d
220    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
221  ) FROM t1
222} {1 21   2 21   3 21   4 21   5 21   6 21}
223
224do_execsql_test 2.26 {
225  SELECT a, sum(d) OVER (
226    PARTITION BY b
227    ORDER BY d
228    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
229  ) FROM t1
230} {2 12   4 12   6 12   1 9   3 9   5 9}
231
232do_execsql_test 2.27 {
233  SELECT a, sum(d) OVER (
234    ORDER BY d
235    ROWS BETWEEN CURRENT ROW AND CURRENT ROW
236  ) FROM t1
237} {1 1   2 2   3 3   4 4   5 5   6 6}
238
239do_execsql_test 2.28 {
240  SELECT a, sum(d) OVER (
241    PARTITION BY b
242    ORDER BY d
243    ROWS BETWEEN CURRENT ROW AND CURRENT ROW
244  ) FROM t1
245} {2 2   4 4   6 6   1 1   3 3   5 5}
246
247do_execsql_test 2.29 {
248  SELECT a, sum(d) OVER (
249    ORDER BY d
250    RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
251  ) FROM t1
252} {1 21   2 20   3 18   4 15   5 11   6 6}
253
254do_execsql_test 2.30 {
255  SELECT a, sum(d) OVER (
256    ORDER BY b
257    RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
258  ) FROM t1
259} {2 21   4 21   6 21   1 9   3 9   5 9}
260
261#==========================================================================
262
263finish_test
264#==========================================================================
265
266finish_test
267