xref: /sqlite-3.40.0/test/window2.test (revision c3a20c19)
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
98finish_test
99#==========================================================================
100
101do_execsql_test 2.1 {
102  SELECT a, sum(d) OVER (
103    PARTITION BY b ORDER BY d
104    RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
105  ) FROM t1
106} {2 12   4 10   6 6   1 9   3 8   5 5}
107
108do_execsql_test 2.2 {
109  SELECT a, sum(d) OVER (
110    ORDER BY b
111    RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
112  ) FROM t1
113} {2 21   4 21   6 21   1 9   3 9   5 9}
114
115do_execsql_test 2.3 {
116  SELECT a, sum(d) OVER (
117    ORDER BY d
118    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
119  ) FROM t1
120} {1 21   2 21   3 21   4 21   5 21   6 21}
121
122do_execsql_test 2.4 {
123  SELECT a, sum(d) OVER (
124    ORDER BY d
125    ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
126  ) FROM t1
127} {1 3   2 6   3 9   4 12   5 15   6 11}
128
129do_execsql_test 2.5 {
130  SELECT a, sum(d) OVER (
131    ORDER BY d
132    ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING
133  ) FROM t1
134} {1 {}   2 1   3 2   4 3   5 4   6 5}
135
136finish_test
137