xref: /sqlite-3.40.0/test/window2.test (revision 99652dda)
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
133#==========================================================================
134
135finish_test
136#==========================================================================
137
138do_execsql_test 3.1 {
139  SELECT a, sum(d) OVER (
140    PARTITION BY b ORDER BY d
141    RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
142  ) FROM t1
143} {2 12   4 10   6 6   1 9   3 8   5 5}
144
145do_execsql_test 3.2 {
146  SELECT a, sum(d) OVER (
147    ORDER BY b
148    RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
149  ) FROM t1
150} {2 21   4 21   6 21   1 9   3 9   5 9}
151
152do_execsql_test 3.3 {
153  SELECT a, sum(d) OVER (
154    ORDER BY d
155    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
156  ) FROM t1
157} {1 21   2 21   3 21   4 21   5 21   6 21}
158
159finish_test
160