88 lines
2.3 KiB
SQL
88 lines
2.3 KiB
SQL
# name: test/sql/window/test_evil_window.test
|
|
# description: More evil cases
|
|
# group: [window]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
# negative lag
|
|
query II
|
|
select *
|
|
from (
|
|
select lag(i, -1) over () as negative, lead(i, 1) over () as positive
|
|
from generate_series(0, 10, 1) tbl(i)
|
|
) w
|
|
where negative <> positive
|
|
----
|
|
|
|
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')
|
|
|
|
# aggr as input to window
|
|
query TR
|
|
SELECT depname, sum(sum(salary)) over (partition by depname order by salary) FROM empsalary group by depname, salary order by depname, salary
|
|
----
|
|
develop 4200.000000
|
|
develop 8700.000000
|
|
develop 19100.000000
|
|
develop 25100.000000
|
|
personnel 3500.000000
|
|
personnel 7400.000000
|
|
sales 9600.000000
|
|
sales 14600.000000
|
|
|
|
# expr in window
|
|
query IR
|
|
SELECT empno, sum(salary*2) OVER (PARTITION BY depname ORDER BY empno) FROM empsalary ORDER BY depname, empno
|
|
----
|
|
7 8400.000000
|
|
8 20400.000000
|
|
9 29400.000000
|
|
10 39800.000000
|
|
11 50200.000000
|
|
2 7800.000000
|
|
5 14800.000000
|
|
1 10000.000000
|
|
3 19600.000000
|
|
4 29200.000000
|
|
|
|
# expr ontop of window
|
|
query IR
|
|
SELECT empno, 2*sum(salary) OVER (PARTITION BY depname ORDER BY empno) FROM empsalary ORDER BY depname, empno
|
|
----
|
|
7 8400.000000
|
|
8 20400.000000
|
|
9 29400.000000
|
|
10 39800.000000
|
|
11 50200.000000
|
|
2 7800.000000
|
|
5 14800.000000
|
|
1 10000.000000
|
|
3 19600.000000
|
|
4 29200.000000
|
|
|
|
# tpcds-derived window
|
|
query TR
|
|
SELECT depname, sum(salary)*100.0000/sum(sum(salary)) OVER (PARTITION BY depname ORDER BY salary) AS revenueratio FROM empsalary GROUP BY depname, salary ORDER BY depname, revenueratio
|
|
----
|
|
develop 23.904382
|
|
develop 51.724138
|
|
develop 54.450262
|
|
develop 100.000000
|
|
personnel 52.702703
|
|
personnel 100.000000
|
|
sales 34.246575
|
|
sales 100.000000
|
|
|
|
statement ok
|
|
CREATE TABLE empty_unsorted(c0 VARCHAR);
|
|
|
|
statement ok
|
|
SELECT *
|
|
FROM empty_unsorted
|
|
WHERE(NOT(false = ANY([])))
|
|
ORDER BY(~((SUM(true) OVER() - SUM(true) OVER())::INT)) ASC;
|