# name: test/sql/window/test_invalid_window.test # description: Illegal window function # group: [window] 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') # GROUP BY window function is not allowed statement error SELECT depname, min(salary) OVER (PARTITION BY depname ORDER BY salary, empno) m1 FROM empsalary GROUP BY m1 ORDER BY depname, empno ---- statement error select row_number() over (range between unbounded following and unbounded preceding); ---- statement error select row_number() over (range between unbounded preceding and unbounded preceding); ---- # ORDER BY is now implemented for window functions! query I select LIST(salary ORDER BY enroll_date, salary) OVER (PARTITION BY depname) FROM empsalary ORDER BY ALL DESC ---- [6000, 5200, 5200, 4200, 4500] [6000, 5200, 5200, 4200, 4500] [6000, 5200, 5200, 4200, 4500] [6000, 5200, 5200, 4200, 4500] [6000, 5200, 5200, 4200, 4500] [5000, 4800, 4800] [5000, 4800, 4800] [5000, 4800, 4800] [3900, 3500] [3900, 3500] # GROUPS frame spec is now implemented for window functions! query I SELECT sum(i) OVER (ORDER BY i GROUPS 1 PRECEDING) FROM generate_series(1,10) AS _(i) ORDER BY i ---- 1 3 5 7 9 11 13 15 17 19 # Invalid window names foreach invalid PARTITION RANGE ROWS GROUPS statement error SELECT array_agg(i) OVER (${invalid} ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM generate_series(1,5) AS _(i) WINDOW ${invalid} AS (ORDER BY i); ---- syntax error at or near endloop # Framed non-aggregate functions can't handle EXCLUDE foreach func lead lag ntile statement error SELECT i, ${func}(i ORDER BY i // 2, i) OVER ( ORDER BY i // 2 ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING EXCLUDE TIES ) AS f, FROM range(10) tbl(i) ORDER BY i; ---- EXCLUDE is not supported for the window function statement error SELECT i, lead(i ORDER BY i // 2, i) OVER w AS f, FROM range(10) tbl(i) WINDOW w AS ( ORDER BY i // 2 ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING EXCLUDE TIES ) ORDER BY i; ---- EXCLUDE is not supported for the window function endloop foreach func row_number rank cume_dist statement error SELECT i, ${func}(ORDER BY i // 2, i) OVER ( ORDER BY i // 2 ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING EXCLUDE TIES ) AS f, FROM range(10) tbl(i) ORDER BY i; ---- EXCLUDE is not supported for the window function statement error SELECT i, ${func}(ORDER BY i // 2, i) OVER w AS f, FROM range(10) tbl(i) WINDOW w AS ( ORDER BY i // 2 ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING EXCLUDE TIES ) ORDER BY i; ---- EXCLUDE is not supported for the window function endloop