321 lines
4.9 KiB
SQL
321 lines
4.9 KiB
SQL
# name: test/sql/window/test_window_wisconsin.test
|
|
# description: Wisconsin-derived window test cases
|
|
# group: [window]
|
|
|
|
statement ok
|
|
SET default_null_order='nulls_first';
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
CREATE TABLE tenk1 (unique1 int4, unique2 int4, two int4, four int4, ten int4, twenty int4, hundred int4, thousand int4, twothousand int4, fivethous int4, tenthous int4, odd int4, even int4, stringu1 varchar, stringu2 varchar, string4 varchar)
|
|
|
|
statement ok
|
|
insert into tenk1 values (8800,0,0,0,0,0,0,800,800,3800,8800,0,1,'MAAAAA','AAAAAA','AAAAxx'), (1891,1,1,3,1,11,91,891,1891,1891,1891,182,183,'TUAAAA','BAAAAA','HHHHxx'), (3420,2,0,0,0,0,20,420,1420,3420,3420,40,41,'OBAAAA','CAAAAA','OOOOxx'), (9850,3,0,2,0,10,50,850,1850,4850,9850,100,101,'WOAAAA','DAAAAA','VVVVxx'), (7164,4,0,0,4,4,64,164,1164,2164,7164,128,129,'OPAAAA','EAAAAA','AAAAxx'), (8009,5,1,1,9,9,9,9,9,3009,8009,18,19,'BWAAAA','FAAAAA','HHHHxx'), (5057,6,1,1,7,17,57,57,1057,57,5057,114,115,'NMAAAA','GAAAAA','OOOOxx'), (6701,7,1,1,1,1,1,701,701,1701,6701,2,3,'TXAAAA','HAAAAA','VVVVxx'), (4321,8,1,1,1,1,21,321,321,4321,4321,42,43,'FKAAAA','IAAAAA','AAAAxx'), (3043,9,1,3,3,3,43,43,1043,3043,3043,86,87,'BNAAAA','JAAAAA','HHHHxx')
|
|
|
|
query I
|
|
SELECT COUNT(*) OVER () FROM tenk1
|
|
----
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
|
|
query RII
|
|
SELECT sum(four) OVER (PARTITION BY ten ORDER BY unique2) AS sum_1, ten, four FROM tenk1 WHERE unique2 < 10 order by ten, unique2
|
|
----
|
|
0.000000 0 0
|
|
0.000000 0 0
|
|
2.000000 0 2
|
|
3.000000 1 3
|
|
4.000000 1 1
|
|
5.000000 1 1
|
|
3.000000 3 3
|
|
0.000000 4 0
|
|
1.000000 7 1
|
|
1.000000 9 1
|
|
|
|
query I
|
|
SELECT row_number() OVER (ORDER BY unique2) rn FROM tenk1 WHERE unique2 < 10 ORDER BY rn
|
|
----
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
|
|
query III
|
|
SELECT rank() OVER (PARTITION BY four ORDER BY ten) AS rank_1, ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten
|
|
----
|
|
1 0 0
|
|
1 0 0
|
|
3 4 0
|
|
1 1 1
|
|
1 1 1
|
|
3 7 1
|
|
4 9 1
|
|
1 0 2
|
|
1 1 3
|
|
2 3 3
|
|
|
|
query I
|
|
SELECT dense_rank() OVER (PARTITION BY four ORDER BY ten) FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten
|
|
----
|
|
1
|
|
1
|
|
2
|
|
1
|
|
1
|
|
2
|
|
3
|
|
1
|
|
1
|
|
2
|
|
|
|
query I
|
|
SELECT first_value(ten) OVER (PARTITION BY four ORDER BY ten) FROM tenk1 WHERE unique2 < 10 order by four, ten
|
|
----
|
|
0
|
|
0
|
|
0
|
|
1
|
|
1
|
|
1
|
|
1
|
|
0
|
|
1
|
|
1
|
|
|
|
# percent_rank
|
|
query I
|
|
SELECT cast(percent_rank() OVER (PARTITION BY four ORDER BY ten)*10 as INTEGER) FROM tenk1 ORDER BY four, ten
|
|
----
|
|
0
|
|
0
|
|
10
|
|
0
|
|
0
|
|
7
|
|
10
|
|
0
|
|
0
|
|
10
|
|
|
|
# cume_dist
|
|
query I
|
|
SELECT cast(cume_dist() OVER (PARTITION BY four ORDER BY ten)*10 as integer) FROM tenk1 WHERE unique2 < 10 order by four, ten
|
|
----
|
|
7
|
|
7
|
|
10
|
|
5
|
|
5
|
|
8
|
|
10
|
|
10
|
|
5
|
|
10
|
|
|
|
# ntile
|
|
query I
|
|
SELECT ntile(2) OVER (ORDER BY ten, four) nn FROM tenk1 ORDER BY ten, four, nn
|
|
----
|
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
2
|
|
2
|
|
2
|
|
2
|
|
2
|
|
|
|
query I
|
|
SELECT ntile(3) OVER (ORDER BY ten, four) nn FROM tenk1 ORDER BY ten, four, nn
|
|
----
|
|
1
|
|
1
|
|
1
|
|
1
|
|
2
|
|
2
|
|
2
|
|
3
|
|
3
|
|
3
|
|
|
|
query I
|
|
SELECT ntile(4) OVER (ORDER BY ten, four) nn FROM tenk1 ORDER BY ten, four, nn
|
|
----
|
|
1
|
|
1
|
|
1
|
|
2
|
|
2
|
|
2
|
|
3
|
|
3
|
|
4
|
|
4
|
|
|
|
query I
|
|
SELECT ntile(5) OVER (ORDER BY ten, four) nn FROM tenk1 ORDER BY ten, four, nn
|
|
----
|
|
1
|
|
1
|
|
2
|
|
2
|
|
3
|
|
3
|
|
4
|
|
4
|
|
5
|
|
5
|
|
|
|
# lead/lag
|
|
query I
|
|
SELECT lag(ten) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
NULL
|
|
0
|
|
0
|
|
NULL
|
|
1
|
|
1
|
|
7
|
|
NULL
|
|
NULL
|
|
1
|
|
|
|
query I
|
|
SELECT lead(ten) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
0
|
|
4
|
|
NULL
|
|
1
|
|
7
|
|
9
|
|
NULL
|
|
NULL
|
|
3
|
|
NULL
|
|
|
|
query I
|
|
SELECT lag(ten, four) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
0
|
|
0
|
|
4
|
|
NULL
|
|
1
|
|
1
|
|
7
|
|
NULL
|
|
NULL
|
|
NULL
|
|
|
|
query I
|
|
SELECT lag(ten, four, 0) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
0
|
|
0
|
|
4
|
|
0
|
|
1
|
|
1
|
|
7
|
|
0
|
|
0
|
|
0
|
|
|
|
statement error
|
|
SELECT lag(ten, four, 0, 0) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
<REGEX>:.*Parser Error.*Incorrect number of parameters.*
|
|
|
|
query I
|
|
SELECT lead(ten) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
0
|
|
4
|
|
NULL
|
|
1
|
|
7
|
|
9
|
|
NULL
|
|
NULL
|
|
3
|
|
NULL
|
|
|
|
query I
|
|
SELECT lead(ten * 2, 1) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
0
|
|
8
|
|
NULL
|
|
2
|
|
14
|
|
18
|
|
NULL
|
|
NULL
|
|
6
|
|
NULL
|
|
|
|
query I
|
|
SELECT lead(ten * 2, 1, -1) OVER (PARTITION BY four ORDER BY ten) lt FROM tenk1 order by four, ten, lt
|
|
----
|
|
0
|
|
8
|
|
-1
|
|
2
|
|
14
|
|
18
|
|
-1
|
|
-1
|
|
6
|
|
-1
|
|
|
|
# empty OVER clause
|
|
query IRIIII
|
|
SELECT COUNT(*) OVER w c, SUM(four) OVER w s, cast(AVG(ten) OVER w * 10 as integer) a, RANK() over w r, DENSE_RANK() over w dr, ROW_NUMBER() OVER w rn FROM tenk1 WINDOW w AS () ORDER BY rn
|
|
----
|
|
10 12.000000 26 1 1 1
|
|
10 12.000000 26 1 1 2
|
|
10 12.000000 26 1 1 3
|
|
10 12.000000 26 1 1 4
|
|
10 12.000000 26 1 1 5
|
|
10 12.000000 26 1 1 6
|
|
10 12.000000 26 1 1 7
|
|
10 12.000000 26 1 1 8
|
|
10 12.000000 26 1 1 9
|
|
10 12.000000 26 1 1 10
|
|
|
|
# no ordering but still a frame spec (somewhat underdefined)
|
|
query IRIIII
|
|
SELECT COUNT(*) OVER w c, SUM(four) OVER w s, cast(AVG(ten) OVER w * 10 as integer) a, RANK() over w r, DENSE_RANK() over w dr, ROW_NUMBER() OVER w rn FROM tenk1 WINDOW w AS (rows between 1 preceding and 1 following) ORDER BY rn
|
|
----
|
|
2 3 5 1 1 1
|
|
3 3 3 1 1 2
|
|
3 5 3 1 1 3
|
|
3 2 13 1 1 4
|
|
3 3 43 1 1 5
|
|
3 2 67 1 1 6
|
|
3 3 57 1 1 7
|
|
3 3 30 1 1 8
|
|
3 5 17 1 1 9
|
|
2 4 20 1 1 10
|