should be it
This commit is contained in:
204
external/duckdb/test/sql/window/test_nthvalue.test
vendored
Normal file
204
external/duckdb/test/sql/window/test_nthvalue.test
vendored
Normal file
@@ -0,0 +1,204 @@
|
||||
# name: test/sql/window/test_nthvalue.test
|
||||
# description: Most basic window function
|
||||
# group: [window]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE empsalary (depname varchar, empno bigint, salary int, enroll_date date);
|
||||
|
||||
statement ok
|
||||
INSERT INTO empsalary VALUES ('develop', 10, 5200, '2007-08-01'), ('sales', 1, 5000, '2006-10-01'), ('personnel', 5, 3500, '2007-12-10'), ('sales', 4, 4800, '2007-08-08'), ('personnel', 2, 3900, '2006-12-23'), ('develop', 7, 4200, '2008-01-01'), ('develop', 9, 4500, '2008-01-01'), ('sales', 3, 4800, '2007-08-01'), ('develop', 8, 6000, '2006-10-01'), ('develop', 11, 5200, '2007-08-15');
|
||||
|
||||
# nth_value
|
||||
query III
|
||||
SELECT depname, empno,
|
||||
nth_value(empno, 2) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 8
|
||||
develop 8 9
|
||||
develop 9 10
|
||||
develop 10 11
|
||||
develop 11 NULL
|
||||
personnel 2 5
|
||||
personnel 5 NULL
|
||||
sales 1 3
|
||||
sales 3 4
|
||||
sales 4 NULL
|
||||
|
||||
# Where either of the the parameters is a constant NULL
|
||||
query III
|
||||
SELECT depname, empno,
|
||||
nth_value(empno, NULL) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 NULL
|
||||
develop 8 NULL
|
||||
develop 9 NULL
|
||||
develop 10 NULL
|
||||
develop 11 NULL
|
||||
personnel 2 NULL
|
||||
personnel 5 NULL
|
||||
sales 1 NULL
|
||||
sales 3 NULL
|
||||
sales 4 NULL
|
||||
|
||||
query III
|
||||
SELECT depname, empno,
|
||||
nth_value(NULL, 2) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 NULL
|
||||
develop 8 NULL
|
||||
develop 9 NULL
|
||||
develop 10 NULL
|
||||
develop 11 NULL
|
||||
personnel 2 NULL
|
||||
personnel 5 NULL
|
||||
sales 1 NULL
|
||||
sales 3 NULL
|
||||
sales 4 NULL
|
||||
|
||||
# Where either of the parameters is a column that contains NULL values
|
||||
query III
|
||||
SELECT depname, empno,
|
||||
nth_value(empno, case empno % 3 when 1 then 2 else NULL end) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 8
|
||||
develop 8 NULL
|
||||
develop 9 NULL
|
||||
develop 10 11
|
||||
develop 11 NULL
|
||||
personnel 2 NULL
|
||||
personnel 5 NULL
|
||||
sales 1 3
|
||||
sales 3 NULL
|
||||
sales 4 NULL
|
||||
|
||||
statement ok
|
||||
CREATE VIEW empno_nulls AS
|
||||
SELECT depname, case empno % 2 when 1 then empno else NULL end as empno, salary, enroll_date
|
||||
FROM empsalary
|
||||
|
||||
query III
|
||||
SELECT depname, empno,
|
||||
nth_value(empno, 2) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empno_nulls
|
||||
ORDER BY 1, 2, 3
|
||||
----
|
||||
develop NULL NULL
|
||||
develop NULL 7
|
||||
develop 7 9
|
||||
develop 9 11
|
||||
develop 11 NULL
|
||||
personnel NULL 5
|
||||
personnel 5 NULL
|
||||
sales NULL 1
|
||||
sales 1 3
|
||||
sales 3 NULL
|
||||
|
||||
# Where the second parameter (offset) is not a constant
|
||||
query IIII
|
||||
SELECT depname, empno, 1 + empno %3 as offset,
|
||||
nth_value(empno, 1 + empno %3) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 2 8
|
||||
develop 8 3 10
|
||||
develop 9 1 9
|
||||
develop 10 2 11
|
||||
develop 11 3 NULL
|
||||
personnel 2 3 NULL
|
||||
personnel 5 3 NULL
|
||||
sales 1 2 3
|
||||
sales 3 1 3
|
||||
sales 4 2 NULL
|
||||
|
||||
# Where the second parameter (offset) can be zero (coverage)
|
||||
query IIII
|
||||
SELECT depname, empno, empno %3 as offset,
|
||||
nth_value(empno, empno %3) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 1 7
|
||||
develop 8 2 9
|
||||
develop 9 0 NULL
|
||||
develop 10 1 10
|
||||
develop 11 2 NULL
|
||||
personnel 2 2 5
|
||||
personnel 5 2 NULL
|
||||
sales 1 1 1
|
||||
sales 3 0 NULL
|
||||
sales 4 1 4
|
||||
|
||||
# Where the first parameter is a constant
|
||||
query III
|
||||
SELECT depname, empno,
|
||||
nth_value(-1, 2) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
ORDER BY 1, 2
|
||||
----
|
||||
develop 7 -1
|
||||
develop 8 -1
|
||||
develop 9 -1
|
||||
develop 10 -1
|
||||
develop 11 NULL
|
||||
personnel 2 -1
|
||||
personnel 5 NULL
|
||||
sales 1 -1
|
||||
sales 3 -1
|
||||
sales 4 NULL
|
||||
|
||||
statement error
|
||||
SELECT depname, empno,
|
||||
nth_value(empno) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT depname, empno,
|
||||
nth_value(empno, 2, 3) OVER (
|
||||
PARTITION BY depname ORDER BY empno ASC
|
||||
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
|
||||
) fv
|
||||
FROM empsalary
|
||||
----
|
||||
Reference in New Issue
Block a user